我有一个带有值和相应坐标的矩阵,并希望为给定的坐标绘制此矩阵的热图。一个工作的例子是
import numpy as np
import matplotlib.pyplot as plt
intensities=[[1,3,5],[2,4,6]]
coords=[[[0,0],[1,0],[2,4]],[[2,1],[3,5],[6,1]]]
plt.pcolormesh(intensities)
但是,我希望将这些点绘制在由坐标给出的坐标处。不幸的是,坐标不能表示为两个数组。
我可以看到,pcolormesh和类似工具可能是错误的工具,因为它们填充了矩形。我不关心用于填充空间的多边形的特定形状,因为我将有足够多的点使得效果不可见。
试图对图像进行后处理会产生问题。绘制的图形对应于非正交参考帧,我希望看到参考帧正交时看起来会是什么样。
答案 0 :(得分:0)
Per the comments,coords[a, b,:]
为所有有效intensities[a, b]
,a
提供与b
相关联的x,y坐标。因此,我们可以使用
x
,y
坐标
x = coords[..., 0].ravel()
y = coords[..., 1].ravel()
,相应的颜色将由
给出c = intensities.ravel()
import numpy as np
import matplotlib.pyplot as plt
intensities = np.array([[1, 3, 5], [2, 4, 6]])
coords = np.array([[[0, 0], [1, 0], [2, 4]], [[2, 1], [3, 5], [6, 1]]])
x = coords[..., 0].ravel()
y = coords[..., 1].ravel()
c = intensities.ravel()
plt.scatter(x, y, c=c, s=200)
plt.colorbar()
plt.show()
s=200
控制点的大小。我使用了一个很大的值来使示例中的几个点更加明显。如果你有很多分数,你当然想要一个较小的数字。