我有一些 z=f(x,y) 数据,我想在热图中显示。所以我使用
np.meshgrid
创建一个 (x,y) 网格,然后调用 pcolormesh
。然而,与数据点相对应的每个“图块”的刻度并不居中——在文档中,我没有找到任何关于如何将每个图块的刻度居中的说明,以便我可以立即读出相应的值。有什么想法吗?
例如,在所附图像中,不清楚该刻度对应于哪个 x 值。
在 pcolormesh 中,网格由边缘值定义。在以下示例中,左下角的值 6 是每个维度中 0 到 1 之间的值。我想这对于每个人来说都是完全可以理解的。
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
x = np.arange(5)
y = np.arange(3)
X,Y = np.meshgrid(x,y)
Z = np.random.randint(1,9, size=(2,4))
plt.pcolormesh(X,Y,Z)
plt.show()
现在,如果您只想(仅)在单元格中间有刻度,您可以按如下方式设置它们
plt.xticks(x[:-1]+0.5)
plt.yticks(y[:-1]+0.5)
如果左下像素实际上对应的不是0到1之间的数据,而是at0的数据,则网格是‘错误’;解决方案是将其平移像素宽度的一半来修复它。
plt.pcolormesh(X-0.5,Y-0.5,Z)
如上所述,可以使用
plt.xticks
将刻度调整为仅显示某些数字。