Объединить несколько тепловых карт, созданных морским - PullRequest
0 голосов
/ 08 февраля 2019

Предположим, набор данных с корреляцией между 3 переменными.Корреляция измеряется в течение 2 разных периодов.Данные в форме:

df1
    A   B   C
A   NaN 0.1 0.2
B   0.7 NaN 0.5
C   0.6 0.4 NaN

df2
    A   B   C
A   NaN 1   0.5
B   0.5 NaN 0.6
C   0.6 0.2 NaN

Цель состоит в создании тепловой карты.Я попробовал это

ax1 = sns.heatmap(df1)
ax2 = sns.heatmap(df2)

, но это дает мне отдельные тепловые карты, как показано в части 1 рисунка.

Так, как показано на этой плохой диаграмме, на горизонтальной оси я хотел бы разделитьпеременные по сезонам.Как мне этого добиться?

РИСУНОК

1 Ответ

0 голосов
/ 08 февраля 2019

Как насчет добавления обоих фреймов данных в один и применения мультииндекса:

df = df1.append(df2)
#     0    1    2
#A  NaN  0.1  0.2
#B  0.7  NaN  0.5
#C  0.6  0.4  NaN
#A  NaN  1.0  0.5
#B  0.5  NaN  0.6
#C  0.6  0.2  NaN

iterables = [['A', 'B', 'C'], ['df1', 'df2']]
index = pd.MultiIndex.from_product(iterables, names=['Var', 'season'])
dfm = pd.DataFrame(df.sort_index().values, index=index)
#              0    1    2
#Var season               
#A   df1     NaN  0.1  0.2
#    df2     NaN  1.0  0.5
#B   df1     0.7  NaN  0.5
#    df2     0.5  NaN  0.6
#C   df1     0.6  0.4  NaN
#    df2     0.6  0.2  NaN

sns.heatmap(dfm, annot=True)

enter image description here

...