具有指定坐标点的热图

Heatmap with points at specified coordinates

我有一个包含值和对应坐标的矩阵,我想针对给定的坐标绘制该矩阵的热图。一个可行的例子是

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)

但是,我希望在 coords 给出的坐标处绘制点。不幸的是,坐标不能只表示为两个数组。

我可以看出 pcolormesh 和类似工具很可能是错误的工具,因为它们填充了矩形。我不关心用于填充 space 的多边形的特定形状,因为我将有足够多的点,以至于效果不可见。

问题是由于尝试对图像进行后处理而引起的。绘制了一个对应于非正交参考系的图形,我想看看如果参考系是正交的,它会是什么样子。

coords[a, b,:] 为所有有效的 ab 给出与 intensities[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 控制点的大小。我使用了一个很大的值来使示例中的几个点更加明显。如果你有很多积分,你当然会想要一个较小的数字。