Eu tenho um dataframe gerado a partir do pacote Pandas do Python. Como posso gerar mapa de calor usando DataFrame do pacote pandas.
import numpy as np
from pandas import *
Index= ['aaa','bbb','ccc','ddd','eee']
Cols = ['A', 'B', 'C','D']
df = DataFrame(abs(np.random.randn(5, 4)), index= Index, columns=Cols)
>>> df
A B C D
aaa 2.431645 1.248688 0.267648 0.613826
bbb 0.809296 1.671020 1.564420 0.347662
ccc 1.501939 1.126518 0.702019 1.596048
ddd 0.137160 0.147368 1.504663 0.202822
eee 0.134540 3.708104 0.309097 1.641090
>>>
Respostas:
Você quer
matplotlib.pcolor
:Isto dá:
fonte
pcolor
vs.imshow
.pcolormesh
, que é otimizado para este tipo de gráfico.Para as pessoas que estão olhando para isso hoje, eu recomendaria o Seaborn
heatmap()
conforme documentado aqui .O exemplo acima seria feito da seguinte maneira:
Onde
%matplotlib
está uma função mágica do IPython para quem não conhece.fonte
import matplotlib.pyplot as plt
?import matplotlib.pyplot as plt
vez de%matplotlib inline
e termine complt.show()
para realmente ver o enredo.Se você não precisa de um gráfico por palavra, e está simplesmente interessado em adicionar cores para representar os valores em um formato de tabela, você pode usar o
style.background_gradient()
método do quadro de dados do pandas. Este método coloriza a tabela HTML que é exibida ao visualizar os quadros de dados do pandas, por exemplo, no JupyterLab Notebook e o resultado é semelhante ao uso de "formatação condicional" no software de planilha:Para um uso detalhado, por favor, veja a resposta mais elaborada que forneci no mesmo tópico anteriormente e a seção de estilo da documentação do pandas .
fonte
pd.DataFrame([[1, 1], [0, 3]]).style.background_gradient(cmap='summer')
resultados de código em uma tabela com duas unidades, cada uma com uma cor diferente.axis=None
(desde o pandas 0.24.0).axis=None
consegue isso e, na minha opinião, deveria fazer parte de sua resposta (especialmente porque não parece estar documentado 0 )axis=None
parte da resposta detalhada que indiquei acima, junto com algumas outras opções porque concordo com você que algumas dessas opções permitem o comportamento comumente desejado. Também notei a falta de documentação ontem e abri um PR .A
sns.heatmap
API útil está aqui . Confira os parâmetros, há um bom número deles. Exemplo:fonte
Se você deseja um mapa de calor interativo de um Pandas DataFrame e está executando um bloco de notas Jupyter, pode experimentar o Widget interativo Clustergrammer-Widget , consulte o bloco de notas interativo no NBViewer aqui , a documentação aqui
E para conjuntos de dados maiores, você pode tentar o widget Clustergrammer2 WebGL em desenvolvimento (bloco de notas de exemplo aqui )
fonte
Por favor, note que os autores da
seaborn
única querseaborn.heatmap
para trabalhar com dataframes categóricas. Não é geral.Se seu índice e colunas forem valores numéricos e / ou de data e hora, este código será útil para você.
A função de mapeamento de calor Matplotlib
pcolormesh
requer bins em vez de índices , então existe algum código sofisticado para construir bins a partir de seus índices de dataframe (mesmo se seu índice não estiver uniformemente espaçado!).O resto é simplesmente
np.meshgrid
eplt.pcolormesh
.Chame-o de usando
heatmap(df)
e veja-o usandoplt.show()
.fonte