【问题标题】:Combine several heat maps结合几个热图
【发布时间】:2021-09-03 18:54:16
【问题描述】:

我有几个矩阵,我想用不同的颜色显示它们,但在一个热图中。例如:

import numpy as np
a=np.array([[0,0,0],[0,0,0],[1,0,0]])
b=np.array([[0,0,0],[2,2,0],[0,0,0]])
c=np.array([[3,0,0],[0,3,0],[0,0,3]])

a+b+c=np.array([[3, 0, 0],
   [2, 5, 0],
   [1, 0, 3]])

。我想在一个热图中根据 1、2、3 为非零位置赋予不同的颜色。 a 和 b 没有问题,但 b 和 c 有重叠。那么我怎样才能清楚地显示它们呢? 所以对于最终的矩阵a+b+c,我希望人们能理解1发生在3,1位置,一种颜色,2发生在2,1和2,2,另一种颜色,3发生在位置1,1和2 ,2 和 3,3 与第三种颜色。

【问题讨论】:

  • 我不太明白你的问题。而且您提供的代码不起作用。你能修复它,或者添加你说没有问题的部分吗?否则,我只是猜测......谢谢!
  • a 是 3 个 RGB 像素的数组吗?你的数据对应什么?您希望结果如何?
  • @bastiengirschig 非常感谢!我稍微修改了代码和解释。希望我解释清楚。如果还不清楚,请告诉我!
  • @MarkSetchell 热图意味着在不同的条件下(这里的元素值),它们发生在不同的参数空间(热图的轴)。我希望人们可以看到它,即不同的条件(值)发生在(热图的)不同位置。

标签: python numpy heatmap


【解决方案1】:

我仍然对你想要实现的目标有点困惑,但我希望这就是你想要的

我已将每个数组分配给输出图像中的一个通道(红色、绿色和蓝色) 这给出了以下颜色图:

  • 没有值:黑色
  • a、b 和 c 的值:白色
  • 只有一个:红色
  • 只有 b:绿色
  • a 和 b 的值是:黄色
  • 等等……

这里是sn-p:

import numpy as np
from matplotlib import pyplot as plt

# input data
a = np.array([[0,0,0],[0,0,0],[1,0,0]])
b = np.array([[0,0,0],[2,2,0],[0,0,0]])
c = np.array([[3,0,0],[0,3,0],[0,0,3]])

# transform the data so that all values are either 0 or one
a = a.astype(bool)
b = b.astype(bool)
c = c.astype(bool)

# create the empty output image (heatmap)
width, height = a.shape
img = np.zeros((width, height, 3))
# put the data into the image
img[:,:,0] = a
img[:,:,1] = b
img[:,:,2] = c

plt.imshow(img)
plt.show()

结果如下:

希望对你有帮助

【讨论】:

  • 这肯定会生成您可以包含的图像吗?
  • 确实如此。感谢您的建议,我已经更新了答案。注意:我在你的评论中读到了一些消极的攻击性,这很不愉快......
  • 你看错了,没有。我喜欢最好和最有用的答案,并且我总是很乐意接受自己的改进建议,例如昨天的示例...stackoverflow.com/q/57315100/2836621
  • 酷。我想我太敏感了...如果我可以提出建议:确保您的 cmets 给人的印象是建议/请求而不是批评。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2017-06-20
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多