2017-02-20 14 views
0

私はしばしばmatplotlibのpcolorメソッドを使用しますが、時々私には分かりませんが次元の不一致エラーのようなものがあります。ここでは、サンプルコードmatplotlib.pyplot.pcolor不一致エラーのメッセージ:Lがありません

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:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\pyplot.py", line 3083, in pcolor 
    ret = ax.pcolor(*args, **kwargs) 

    File "C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\__init__.py", line 1818, in inner 
    return func(ax, *args, **kwargs) 

    File "C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\axes\_axes.py", line 5168, in pcolor 
    X, Y, C = self._pcolorargs('pcolor', *args, allmatch=False) 

    File "C:\Users\fedel\Anaconda2c\lib\site-packages\matplotlib\axes\_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) 

L寸法のない「40L」の次元と「40」の違いは何ですか?で自分で試すことができたようそして、このエラーを回避してデー​​タをプロットするために私が何をすべきだとお考えですか?

答えて

1

Lは問題ありません。これは古いPythonバージョン(Python 2には2つの整数型があります)を使用した結果です。

それはあなたがzpcolor方法にC)転置形状を有し、40 × 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)

関連する問題