Seaborn Heatmap Subplots - Общая тепловая панель и отопление - PullRequest
0 голосов
/ 17 января 2020

Я пытаюсь сравнить 3 тепловые карты. Я изо всех сил пытаюсь получить 3 карты, чтобы разделить "нагрев" от цветовой шкалы. Нагревание становится относительным к набору данных каждого участка, рейса, рейса1 и рейса2. И не относительно разных участков.

Есть ли какой-нибудь выход, соединяющий вспомогательные участки с общей цветовой панелью?

Я использовал следующий код:

import seaborn as sns  
import matplotlib.pyplot as plt

flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
flights1 = flights * 10
flights2 = flights * 2
f,(ax1,ax2,ax3, axcb) = plt.subplots(1,4, 
        gridspec_kw={'width_ratios':[1,1,1,0.08]})
ax1.get_shared_y_axes().join(ax2,ax3)
g1 = sns.heatmap(flights,cmap="YlGnBu",cbar=False,ax=ax1)
g1.set_ylabel("")
g1.set_xlabel("")
g2 = sns.heatmap(flights1,cmap="YlGnBu",cbar=False,ax=ax2)
g2.set_ylabel("")
g2.set_xlabel("")
g2.set_yticks([])
g3 = sns.heatmap(flights2,cmap="YlGnBu",ax=ax3, cbar_ax=axcb)
g3.set_ylabel("")
g3.set_xlabel("")
g3.set_yticks([])
plt.show()

Треска дает такой вывод:

Output from code

1 Ответ

1 голос
/ 17 января 2020

Вам необходимо установить параметры vmin и vmax равными для каждой тепловой карты. Это пределы, используемые для расчета правильного цвета.

Все значения, меньшие vmin, будут установлены на самый маленький цвет, а более высокие значения на vmax будут установлены на самый высокий цвет. Поэтому, если ваши данные имеют некоторые выбросы, вы можете рассмотреть вопрос о сближении vmin и vmax, чтобы получить больше цветовых вариаций вблизи центра значений.

vmin = min(min(flights['passengers']), min(flights1['passengers']), min(flights2['passengers']))
vmax = max(max(flights['passengers']), max(flights1['passengers']), max(flights2['passengers']))
g1 = sns.heatmap(flights, vmin=vmin, vmax=vmax, cmap="YlGnBu", cbar=False, ax=ax1)
g2 = sns.heatmap(flights, vmin=vmin, vmax=vmax, cmap="YlGnBu", cbar=False, ax=ax2)
g3 = sns.heatmap(flights, vmin=vmin, vmax=vmax, cmap="YlGnBu", ax=ax3, cbar_ax=axcb)
...