Потому что sns.heatmap
возвращает объект matplotlib
оси, мы не можем использовать hm
напрямую , Но мы можем использовать объект cmap
для возврата значений rgba данных. Редактировать Код обновлен, чтобы включить нормализацию данных.
from matplotlib.colors import Normalize
data = np.random.randn(10, 10)
cmap = cm.get_cmap('Greens')
hm = sns.heatmap(data, cmap=cmap)
# Normalize data
norm = Normalize(vmin=data.min(), vmax=data.max())
rgba_values = cmap(norm(data))
Все цвета в настоящее время содержатся в rgba_values
. Таким образом, чтобы получить цвет верхнего левого квадрата в тепловой карты можно просто сделать
In [13]: rgba_values[0,0]
Out[13]: array([ 0. , 0.26666668, 0.10588235, 1. ])
Более подробную информацию, проверить Getting individual colors from a color map in matplotlib
Update
Чтобы перенастроить цветовую палитру с помощью center
и robust
ключевые слова в вызове sns.heatmap
, вам просто нужно переопределить vmin
и vmax
. Если посмотреть на соответствующий исходный код на море (http://github.com/mwaskom/seaborn/blob/master/seaborn/matrix.py#L202), то изменения ниже vmin
и vmax
должны сделать трюк.
data = np.random.randn(10, 10)
center = 2
robust = False
cmap = cm.coolwarm
hm = sns.heatmap(data, cmap=cmap, center=center, robust=robust)
vmin = np.percentile(data, 2) if robust else data.min()
vmax = np.percentile(data, 98) if robust else data.max()
vmin += center
vmax += center
norm = Normalize(vmin=vmin, vmax=vmax)
rgba_values = cmap(norm(data))
Thank you lanery. Что делать, если я должен использовать варианты «центр» и «надежный» для настройки цветовой карты, есть ли способ использовать измененную цветовую палитру? говорят, например: Heatmap = sns.heatmap ( np.random.randn (10, 10), CMAP = cm.coolwarm, центр = 1, надежный = True) – spfraib
Вы должны добавить объект норму - так называемый вы только отображаете значения в [0-1]. – mwaskom
Также cm.get_cmap ('Greens') возвращает объект cm.Greens. – mwaskom