matplotlib.pyplot.pcolor消息不匹配错误:缺少l



我经常使用matplotlib的pcolor方法,但有时会给我一些我不理解的尺寸不匹配错误。在这里示例代码

import numpy as np
import matplotlib.pyplot as plt
idx1 = 180
idx2 = 220
Range1 = range(idx1, idx2, 1)
Range2 = range(512)
z = np.random.randn( len( Range1 ), 512)
x, y = np.meshgrid( Range1 , Range2)
plt.figure()
plt.pcolor(x, y, z)
plt.show()

您可以自己尝试不匹配错误是

Traceback (most recent call last):
  File "<ipython-input-1-7d51fd1b710e>", line 13, in <module>
    plt.pcolor(x, y, z)
  File "C:UsersfedelAnaconda2clibsite-packagesmatplotlibpyplot.py", line 3083, in pcolor
    ret = ax.pcolor(*args, **kwargs)
  File "C:UsersfedelAnaconda2clibsite-packagesmatplotlib__init__.py", line 1818, in inner
    return func(ax, *args, **kwargs)
  File "C:UsersfedelAnaconda2clibsite-packagesmatplotlibaxes_axes.py", line 5168, in pcolor
    X, Y, C = self._pcolorargs('pcolor', *args, allmatch=False)
  File "C:UsersfedelAnaconda2clibsite-packagesmatplotlibaxes_axes.py", line 4996, in _pcolorargs
    C.shape, Nx, Ny, funcname))
TypeError: Dimensions of C (40L, 512L) are incompatible with X (40) and/or Y (512); see help(pcolor)

" 40升"维度与没有L维的" 40"尺寸有什么区别?您建议我做什么以避免此错误并绘制数据?

L不是问题。这是使用旧版本的工件(Python 2具有两种整数类型)。

看起来您的zCpcolor方法)具有转置形状,40&Times;512而不是512和时代;40:

for a in [x, y, z]:
    print(a.shape)
# (512, 40)
# (512, 40)
# (40, 512)

换台z使其起作用:plt.pcolor(x, y, z.T)

最新更新