我需要做一个二维密度样图。但是我自己计算“密度”。所以基本上我有一个NxM
值数组,我只能用plt.matshow
(或 imshow)绘制。
fig, ax = plt.subplots()
im = ax.matshow(value_array)
ax.set_xticklabels(x_edges - 2.5)
ax.set_yticklabels(y_edges - 0.25)
但是,在这种情况下,轴值是图中的像素,而我真的希望它显示一些用户定义的值。所以我手动更改上面的刻度标签。
这仍然留下一个问题。matshow
仍然认为刻度标签正在标记图像中的“像素”,因此刻度标签打印在每个像素正方形的“中间”。然而,就像我说的那样,我真正想要绘制的更像是一个密度图,所以每个“像素正方形”代表 x,y 空间中的一个 bin。将刻度标签打印在方形边缘上会更有意义,就像它为直方图和频率图所做的一般方式一样。
我应该继续为此使用 matshow 还是有其他功能可以做到这一点?例如,我可以使用plt.hist2d
但手动设置“高度”而不输入数据作为一堆样本吗?否则,我如何plt.matshow
按照我想要的方式放置刻度标签?