У меня есть фрейм данных, созданный из пакета Python Pandas. Как создать тепловую карту с помощью DataFrame из пакета 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
>>>
Ответы:
Вы хотите
matplotlib.pcolor
:Это дает:
источник
pcolor
сравненииimshow
.pcolormesh
оптимизированный для такого рода графики.Тем, кто смотрит на это сегодня, я бы порекомендовал Seaborn,
heatmap()
как описано здесь .Пример выше был бы выполнен следующим образом:
Где
%matplotlib
волшебная функция IPython для незнакомых?источник
import matplotlib.pyplot as plt
?import matplotlib.pyplot as plt
вместо%matplotlib inline
и закончитеplt.show()
, чтобы увидеть сюжет.Если вам не нужен график, например, и вы просто заинтересованы в добавлении цвета для представления значений в формате таблицы, вы можете использовать
style.background_gradient()
метод фрейма данных pandas. Этот метод окрашивает HTML-таблицу, которая отображается при просмотре фреймов данных pandas, например, в JupyterLab Notebook, и результат аналогичен использованию «условного форматирования» в программном обеспечении для работы с электронными таблицами:Для подробного использования, пожалуйста, просмотрите более подробный ответ, который я дал ранее по той же теме, и раздел стилей документации pandas .
источник
pd.DataFrame([[1, 1], [0, 3]]).style.background_gradient(cmap='summer')
приводит к таблице с двумя таблицами, каждая из которых имеет свой цвет.axis=None
(начиная с pandas 0.24.0).axis=None
достигается, и, на мой взгляд, это должно быть частью вашего ответа (особенно потому, что это, похоже, не задокументировано 0 )axis=None
часть подробного ответа, на который я ссылаюсь выше, вместе с несколькими другими вариантами, потому что я согласен с вами, что некоторые из этих параметров обеспечивают обычно желаемое поведение. Еще вчера заметил отсутствие документации и открыл пиар .Полезный
sns.heatmap
api здесь . Ознакомьтесь с параметрами, их очень много. Пример:источник
Если вам нужна интерактивная тепловая карта из Pandas DataFrame и вы используете записную книжку Jupyter, вы можете попробовать интерактивный виджет Clustergrammer-Widget , см. Интерактивную записную книжку на NBViewer здесь , документация здесь
А для больших наборов данных вы можете попробовать находящийся в разработке виджет Clustergrammer2 WebGL (пример блокнота здесь )
источник
Пожалуйста , обратите внимание , что авторы
seaborn
только хотятseaborn.heatmap
работать с категорическим dataframes. Это не общее.Если ваш индекс и столбцы являются числовыми значениями и / или значениями даты и времени, этот код вам пригодится.
Для функции теплового отображения Matplotlib
pcolormesh
требуются бункеры вместо индексов , поэтому есть некоторый причудливый код для создания бинов из индексов вашего фрейма данных (даже если ваш индекс неравномерно распределен!).Остальное просто
np.meshgrid
иplt.pcolormesh
.Назовите это using
heatmap(df)
и посмотрите, как это делаетсяplt.show()
.источник