具有指定坐标点的热图
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,:]
为所有有效的 a
、b
给出与 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
控制点的大小。我使用了一个很大的值来使示例中的几个点更加明显。如果你有很多积分,你当然会想要一个较小的数字。
我有一个包含值和对应坐标的矩阵,我想针对给定的坐标绘制该矩阵的热图。一个可行的例子是
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,:]
为所有有效的 a
、b
给出与 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
控制点的大小。我使用了一个很大的值来使示例中的几个点更加明显。如果你有很多积分,你当然会想要一个较小的数字。