首页 > 解决方案 > 如何创建具有多个颜色图的热图?

问题描述

如下图所示,我正在寻找一种将两个或多个热图组合成一个的简单方法,即具有多个颜色图的热图。

这个想法是将每个单元格分解为多个子单元格。我找不到任何已经实现了这种可视化功能的 python 库。有人知道(至少)接近这个吗?

带有 2 个颜色图的热图

标签: pythonmatplotlibseabornvisualization

解决方案


您可以重组数组以在实际数据之间有空列,然后创建一个掩码数组以绘制具有透明度的热图。这是添加空列的一种方法(可能不是最好的):

arr1 = np.arange(20).reshape(4, 5)
arr2 = np.arange(20, 0, -1).reshape(4, 5)
filler = np.nan * np.zeros((4, 5))

c1 = np.vstack([arr1, filler]).T.reshape(10, 4).T
c2 = np.vstack([filler, arr2]).T.reshape(10, 4).T
c1 = np.ma.masked_array(c1, np.isnan(c1))
c2 = np.ma.masked_array(c2, np.isnan(c2))

plt.pcolormesh(c1, cmap='bone')
plt.pcolormesh(c2, cmap='jet')

您还可以使用np.repeat和屏蔽所有其他列,如@JohanC 注释

c1 = np.ma.masked_array(np.repeat(arr1, 2, axis=1), np.tile([True, False], arr1.size))
c2 = np.ma.masked_array(np.repeat(arr2, 2, axis=1), np.tile([False, True], arr2.size))

在此处输入图像描述


推荐阅读