python - 如何创建具有多个颜色图的热图?
问题描述
如下图所示,我正在寻找一种将两个或多个热图组合成一个的简单方法,即具有多个颜色图的热图。
这个想法是将每个单元格分解为多个子单元格。我找不到任何已经实现了这种可视化功能的 python 库。有人知道(至少)接近这个吗?
解决方案
您可以重组数组以在实际数据之间有空列,然后创建一个掩码数组以绘制具有透明度的热图。这是添加空列的一种方法(可能不是最好的):
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))
推荐阅读
- java - 通过异步任务在两个片段之间传递数据
- c++ - 使用“LoadImageA()”时无法从资源中的位图中获取图像句柄,无法理解原因
- python - 了解我的 LSTM 模型的结构
- scala - 添加新列后,我尝试在我的数据框上使用 groupBy 但我遇到了问题 Task NotSerializable
- node.js - 应用打包后 fs.rmdir 递归停止工作
- java - textview中的Android文本单词之间的距离很长
- ruby-on-rails - 当我们在 ActiveRecord 中有一个字段的新范围时,我们可以立即更改验证代码吗?
- c# - 在 OpenTK 上绘制 10 个数据集
- ruby-on-rails - 找不到 Gemfile 或 .bundle/ 目录
- javascript - 关于不和谐机器人和频道 ID 的问题