Tenho certeza de que estou esquecendo algo muito simples, mas não consigo obter certos planos para trabalhar com a Seaborn.
Se eu fizer:
import seaborn as sns
Em seguida, todos os gráficos que eu criar como de costume com o matplotlib obterão o estilo Seaborn (com a grade cinza em segundo plano).
No entanto, se eu tentar fazer um dos exemplos, como:
In [1]: import seaborn as sns
In [2]: sns.set()
In [3]: df = sns.load_dataset('iris')
In [4]: sns.pairplot(df, hue='species', size=2.5)
Out[4]: <seaborn.axisgrid.PairGrid at 0x3e59150>
A função pairplot retorna um objeto PairGrid, mas o gráfico não aparece.
Estou um pouco confuso porque o matplotlib parece estar funcionando corretamente, e os estilos Seaborn são aplicados a outros gráficos do matplotlib, mas as funções Seaborn parecem não fazer nada. Alguém tem alguma idéia do que pode ser o problema?
python
matplotlib
seaborn
robc89
fonte
fonte
%matplotlib inline
para especificar o back-end em linha. Caso contrário, você pode ligarsns.plt.show()
para renderizar o gráfico em uma janela separada.Respostas:
Os gráficos criados usando o transporte marítimo precisam ser exibidos como gráficos comuns do matplotlib. Isso pode ser feito usando o
função do matplotlib.
Originalmente, publiquei a solução para usar o objeto matplotlib já importado de seaborn (
sns.plt.show()
), no entanto, isso é considerado uma prática ruim. Portanto, basta importar diretamente o módulo matplotlib.pyplot e mostrar seus gráficos comSe o bloco de notas IPython for usado, o back-end em linha poderá ser chamado para remover a necessidade de chamar show após cada plot. A respectiva magia é
fonte
%matplotlib qt
,%matplotlib gtk
,%matplotlib tk
etc. ver%matplotlib?
para mais informações%matplotlib inline
a algum tipo de arquivo de configuração para que seja sempre aplicado? Ou sempre preciso adicioná-lo a cada nova pasta de trabalho?Chego a essa pergunta regularmente e sempre levo um tempo para encontrar o que procuro:
Observe: No Python 2, você também pode usar
sns.plt.show()
, mas não no Python 3.Exemplo completo
Dá
fonte
AttributeError: module 'seaborn' has no attribute 'plt'
sns.plt
Para evitar confusão (como parece haver alguns nos comentários). Supondo que você esteja no Jupyter:
%matplotlib inline
> exibe os gráficos DENTRO do notebooksns.plt.show()
> exibe os gráficos FORA do notebook%matplotlib inline
vai IGNORARsns.plt.show()
no sentido de que parcelas serão mostrados IN o notebook, mesmo quandosns.plt.show()
é chamado.E sim, é fácil incluir a linha na sua configuração:
Execute automaticamente% matplotlib inline no IPython Notebook
Mas parece uma convenção melhor mantê-lo junto com as importações no código real.
fonte
Isso funcionou para mim
fonte
Meu conselho é apenas dar uma
plt.figure()
e dê um gráfico de sns. Por exemplosns.distplot(data)
.Embora pareça, ele não mostra nenhum gráfico, quando você maximizar a figura, poderá ver o gráfico.
fonte
plt.figure()
) antes de fazer meu gráfico de linha e não entendi por que o gráfico não apareceu. Excelente, obrigado!Se você plotar no console IPython (onde não pode usar
%matplotlib inline
) em vez do notebook Jupyter, e não quiser executarplt.show()
repetidamente, poderá iniciar o console IPython comipython --pylab
:fonte
Para diferenciar o estilo do seu trecho de código, suponho que você estivesse usando o IPython em vez do Jupyter Notebook.
Nesta edição do GitHub, ficou claro por um membro do IPython em 2016 que a exibição de gráficos funcionaria apenas quando "apenas funcionasse quando fosse um kernel do Jupyter". Assim, o
%matplotlib inline
não funcionaria.Eu estava tendo o mesmo problema e sugiro que você use o Jupyter Notebook para a visualização.
fonte