使用带有x和y数据的pcolormesh绘制数组会删除一行数据

为了说明我的意思,请参见以下内容:

data = np.random.random([5,5])
plt.pcolormesh(data)


产生以下5x5网格:
python - 有人可以解释这个matplotlib pcolormesh怪癖吗?-LMLPHP

但是,如果我想为这样的数据定义x和y轴,则pcolormesh将创建一个4x4网格,顶部和右侧行丢失...

plt.pcolormesh(range(5), range(5), data)


python - 有人可以解释这个matplotlib pcolormesh怪癖吗?-LMLPHP

为了获得完整的5x5图,我必须做

plt.pcolormesh(range(6), range(6), data)


python - 有人可以解释这个matplotlib pcolormesh怪癖吗?-LMLPHP

这只是pcolormesh的怪癖吗?还是有人可以解释为什么pcolormesh如此行为的原因?

最佳答案

您看到的行为是预期的。 pcolor documentation表示
pcolor(X, Y, C, **kwargs)


  理想情况下,X和Y的尺寸应比C的尺寸大一;如果尺寸相同,则将忽略C的最后一行和最后一列。


对于pcolormesh当然也是如此。

我不确定这是否是讨论这种行为是否是“怪癖”的地方,但是其基本思想是网格定义了彩色面孔的边缘。就像在数字行上一样,您之间有n个数字和n-1个间隔。

通过网格定义边缘实际上是有意义的,因为pcolormesh还允许不等间距的网格,否则将无法定义网格。

python - 有人可以解释这个matplotlib pcolormesh怪癖吗?-LMLPHP

关于python - 有人可以解释这个matplotlib pcolormesh怪癖吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44526052/

10-11 07:22