具有指定坐标点

时间:2016-04-26 19:21:15

标签: python image plot coordinates heatmap

我有一个带有值和相应坐标的矩阵,并希望为给定的坐标绘制此矩阵的热图。一个工作的例子是

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和类似工具可能是错误的工具,因为它们填充了矩形。我不关心用于填充空间的多边形的特定形状,因为我将有足够多的点使得效果不可见。

试图对图像进行后处理会产生问题。绘制的图形对应于非正交参考帧,我希望看到参考帧正交时看起来会是什么样。

1 个答案:

答案 0 :(得分:0)

Per the commentscoords[a, b,:]为所有有效intensities[a, b]a提供与b相关联的x,y坐标。因此,我们可以使用

选择xy坐标
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()

enter image description here

s=200控制点的大小。我使用了一个很大的值来使示例中的几个点更加明显。如果你有很多分数,你当然想要一个较小的数字。