结合seaborn生成的多个热图
Combine multiple Heatmap generated by seaborn
假设一个数据集有 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
objective是生成热图。我试过这个
ax1 = sns.heatmap(df1)
ax2 = sns.heatmap(df2)
但这给了我个人热图,如图的第 1 部分所示。
因此,如这张糟糕的图表所示,在水平轴上,我想按季节划分变量。我该如何实现?
FIGURE
如何将两个数据帧合并为一个并应用多索引:
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)
假设一个数据集有 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
objective是生成热图。我试过这个
ax1 = sns.heatmap(df1)
ax2 = sns.heatmap(df2)
但这给了我个人热图,如图的第 1 部分所示。
因此,如这张糟糕的图表所示,在水平轴上,我想按季节划分变量。我该如何实现?
FIGURE
如何将两个数据帧合并为一个并应用多索引:
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)