4

Python3 で numpy と matplotlib を使用しています。
次のコードがエラーの原因です。

import matplotlib
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.axes import Subplot as plt
from matplotlib import pylab


 a=[1,1]
 b=[1,1]
 fsam = 48000         
 w, h = freqz(b, a, worN=2000)
 plt.plot(((fsam-8000) * 0.5 / np.pi) * w, abs(h), label=" ")   

matplotlib 1.3.x の実際のエラー:

 File "/usr/local/lib/python3.2/dist-packages/matplotlib-1.3.x-py3.2-linux-x86_64.egg/matplotlib/axes.py", line 4119, in plot   
     if not self._hold:   
AttributeError: 'numpy.ndarray' object has no attribute '_hold'   

matplotlib 1.2.0 の実際のエラー:

 Traceback (most recent call last):   
   File "/home/christoph/audio_measurement/AudioTools/AudioTools.py", line 222, in <module>   
       main()   
     File "/home/christoph/audio_measurement/AudioTools/AudioTools.py", line 216, in main   
       form = AppForm()   
     File "/home/christoph/audio_measurement/AudioTools/AudioTools.py", line 39, in __init__   
       self.on_draw()   
     File "/home/christoph/audio_measurement/AudioTools/AudioTools.py", line 80, in on_draw   
       self.transfer = Transfer(self.canvas)   
     File "/home/christoph/audio_measurement/AudioTools/Transfer.py", line 42, in __init__   
       plt.plot(((fsam-8000) * 0.5 / np.pi) * w, abs(h), label=" ")   
     File "/usr/local/lib/python3.2/dist-packages/matplotlib/axes.py", line 3995, in plot   
       if not self._hold: self.cla()   
AttributeError: 'numpy.ndarray' object has no attribute '_hold'   

Transfer は、キャンバスにプロットするクラスです。

係数 a と b の長さを見てみましたが、結果には影響しませんでした。
私はそれについて何も見つけることができませんでした。誰が何がうまくいかないのか知っていますか?

4

1 に答える 1

1

通常、私は, , などimport matplotlib.pyplot as pltと一緒plt.plotに使用します。とにかく、このラインplt.subplotplt.showfrom pylab import *

from matplotlib.axes import Subplot as plt

引数plotを操作しようとしているバインドされていない関数がある理由です。インスタンス化する必要があります。これはうまくいくはずです:ndarraySubplot

import numpy as np
from scipy.signal import freqz

import matplotlib
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.axes import Subplot

fig = Figure()
ax = Subplot(fig, 111)
fig.add_subplot(ax)
canvas = FigureCanvas(fig)

a=[1,1]
b=[1,1]
fsam = 48000         
w, h = freqz(b, a, worN=2000)

ax.plot(((fsam-8000) * 0.5 / np.pi) * w, abs(h), label=" ")
canvas.show()
于 2013-03-28T00:24:07.123 に答える