奇怪的行为:pcolormesh和meshgrid(简单)

时间:2014-06-30 16:35:00

标签: python matplotlib plot

我有一些数据phi,我想用pcolormesh绘制它。 我的第一个方法是:

plt.figure()
plt.colormesh(phi)
plt.show()

产生:

Without Cut

好。现在我只想稍微调整轴,因此我 使用meshgrid:

plt.figure()
kk = np.arange(0,phi.shape[1])
gg = np.arange(-phi.shaoe[0]//2 +1 , phi.shape[0]//2 +1,1)
GG, KK = np.meshgrid(gg,kk)
plt.pcolormesh(KK,GG,phi.T)
plt.show()

现在我得到以下内容:

with cut

正如您可以清楚地看到的那样,顶部的条纹被切割!我无法解释这种行为,因为我对phi函数没有任何改变!我刚刚用网格添加了轴数据!这是什么类型的错误,我该如何解决呢!

PS:如果你想重现这个bug,只需使用一个与y轴平行的某个轴对称的矩阵。

1 个答案:

答案 0 :(得分:2)

pcolorhttp://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.pcolor

的文件
  

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

所以你需要创建两个包含一行和一列的数组:

import pylab as pl
import numpy as np

phi = np.zeros((20, 30))
phi[0, :] = 1
phi[-1, :] = 2

kk = np.arange(0,phi.shape[1]+1)
gg = np.arange(-phi.shape[0]//2 +1 , phi.shape[0]//2 + 2)
GG, KK = np.meshgrid(gg,kk)
pl.pcolormesh(KK,GG,phi.T)