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

时间:2017-06-13 15:43:06

标签: python matplotlib

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

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

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

产生这个5x5网格:
enter image description here

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

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

enter image description here

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

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

enter image description here

这只是pcolormesh的怪癖吗?或者有人可以解释为什么pcolormesh会以这种方式表现的原因吗?

1 个答案:

答案 0 :(得分:2)

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

  

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

pcolormesh当然也是如此。

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

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

enter image description here