Как создать тепловую карту для 2 столбцов в 2 разных масштабах в python? - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь создать тепловую карту, которая позволяет мне представлять два разных столбца из одного и того же фрейма данных. Я надеялся, что справа от тепловой карты будут две цветные полосы, чтобы представить шкалы из каждого столбца. Вот как выглядит часть моего фрейма данных (полный фрейм данных содержит 244 строки):

Country      Count     Score
------------------------------
America      12455     1.23
Mexico       245667    16.22
China        12221     5.445
Belgium      345632    8.23
Turkey       12342     11.4
India        45643     4.2
China        123556    17.8

Я надеялся, что по оси Y я смогу перечислить названия стран, а затем иметь две карты оси X для и счетчик, и оценка, и разные шкалы - затем сбоку есть цветная полоса для счета и оценки отдельно. Можно ли создать что-то подобное с помощью seaborn?

Я приложил пример того, как я надеюсь, что тепловая карта может выглядеть так:

enter image description here

Спасибо

1 Ответ

2 голосов
/ 28 мая 2020

Вы можете довольно легко создать свою тепловую карту «вручную», используя imshow(). Просто нужно правильно разместить получившееся изображение по осям с помощью ключевого слова extent=.

fig, ax = plt.subplots()
N = df.index.size

# first heatmap
im1 = ax.imshow(np.vstack([df['Count'],df['Count']]).T, aspect='auto', extent=[-0.5,0.5,-0.5,N-0.5], origin='lower', cmap='magma')
# second heatmap
im2 = ax.imshow(np.vstack([df['Score'],df['Score']]).T, aspect='auto', extent=[0.5,1.5,-0.5,N-0.5], origin='lower', cmap='Blues')

cbar1 = fig.colorbar(im1, ax=ax, label='Count')
cbar2 = fig.colorbar(im2, ax=ax, label='Score')


ax.set_xlim(-0.5,1.5)
ax.set_xticks([0,1])
ax.set_xticklabels(['Count','Score'])
ax.set_yticks(range(N))
ax.set_yticklabels(df['Country'])
ax.set_ylabel('Countries')
fig.tight_layout()
plt.show()

enter image description here

...