作者:留盏灯开扇门 | 来源:互联网 | 2023-01-01 12:59
我有2个数据表的尺寸4x25
.每个表都来自不同的时间点,但具有完全相同的元数据,实质上是相同的列和行标题.
鉴于列数很多,我认为最好heatmap
使用seaborn
库来表示Python
.但是,我需要在同一个图中包含两个表.我能够创建一个表示单个数据表的热图.
df = pd.DataFrame(raw_data)
ax = sns.heatmap(df)
ax.set(yticklabels=labels)
但是,我不确定如何将两个数据表组合到同一个热图中.我能想到的唯一的办法是只创建一个新的DataFrame
维度4x50
,然后两个表放入一个和情节,使用热图.但是,我需要帮助解决以下问题:
我不确定如何在热图的中间画一条线来区分2个表中的数据.读者看到列开始重复的位置以实现新数据的开始位置是令人讨厌的.
一个更好的解决办法是申请2组数据的2个不同的着色方案中相同的热图,而不是只是简单地画线拦腰.
对上述问题的任何帮助都会非常有帮助.
注意:我并不像上面提到的那样,甚至不使用热图来表示数据.如果还有其他绘图建议,请告诉我.
1> ImportanceOf..:
在图中并排显示两个seaborn热图的一种可能方式是将它们绘制成单独的子图.可以将子图之间的空间设置为非常小(wspace=0.01
)并将相应的颜色条和标记标记定位在该间隙之外.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns
df = pd.DataFrame(np.random.rand(25,4), columns=list("ABCD"))
df2 = pd.DataFrame(np.random.rand(25,4), columns=list("WXYZ"))
fig, (ax,ax2) = plt.subplots(ncols=2)
fig.subplots_adjust(wspace=0.01)
sns.heatmap(df, cmap="rocket", ax=ax, cbar=False)
fig.colorbar(ax.collections[0], ax=ax,location="left", use_gridspec=False, pad=0.2)
sns.heatmap(df2, cmap="icefire", ax=ax2, cbar=False)
fig.colorbar(ax2.collections[0], ax=ax2,location="right", use_gridspec=False, pad=0.2)
ax2.yaxis.tick_right()
ax2.tick_params(rotation=0)
plt.show()