2016-07-06 3 views
0

"これによると、SO noteは埋め込み時にpyplotをインポートすべきではありません。独自のメインループで独自のGUIを実行するような奇妙なことが起こります。組み込みqt4 GUIでpyplotをインポートするのを避けるには?

もしそうなら、plt.axes()を呼び出さずにSliderに必要なmatplotlib.axes._axes.Axes引数をどのように渡すことができますか?

def compute_initial_figure(self): 
     ymax = 300 
     window_size=1 
     res= 0.1 
     ax= self.axes 
     t = np.arange(0.0, 100.0, 0.1) 
     s = np.sin(2*np.pi*t) 
     ax.plot(t, s) 
     ax.axis([0, window_size, -ymax, ymax]) 
     ax.get_xaxis().get_major_formatter().set_useOffset(False) 
     axcolor = 'lightgoldenrodyellow' 
     axpos = plt.axes([.1, .1, 0.75, 0.05], axisbg=axcolor) #MAKES OWN FIG! 
     spos = Slider(axpos, 'Time', res, t[-1], valinit=0) 
     spos.on_changed(update) 

axposラインはPLTを使用し、独自の図は、Qtのウィンドウとは別の作成: はGUI based on matplotlib documentationでは、[スライダーを含めるために、次の追加]きました。メモplt.axesは、matplotlib.axes._subplots.AxesSubplotオブジェクトではなく、matplotlib.axes._axes.Axesオブジェクトを返します。

同様の質問:
When matplotlib is embedded in PyQt4 how are axes/subplots labelled without using pyplot?
Combining PyQt and Matplotlib

+0

ページhttp://matplotlib.org/examples:次に、このようなadd_axesメソッドを呼び出す

self.fig = Figure(figsize=(width, height), dpi=dpi) 

ので、数字への参照を保持することに関連する行を変更します/user_interfaces/embedding_in_qt4.htmlは、そのような 'compute_initial_figure()'を持っていないようです。 –

+0

これは修正されたcompute_initial_figure()です:スライダを含める。あなたの返信に感謝します。 – Rubenulis

答えて

1

plt.axes関数は、現在の姿を取得し、その後figure.add_axesを呼び出して、現在の図のように軸を追加します。現在のFigureを取得する代わりに、作成するときにFigureへの参照を保持する必要があります。 http://matplotlib.org/examples/user_interfaces/embedding_in_qt4.htmlを見ると、Figureの作成方法を知ることができます。この例を出発点として取り上げます。

axpos = self.fig.add_axes([.1, .1, 0.75, 0.05], axisbg=axcolor) 
+0

fig.axesはTYPE:でmatplotlib.axes._axes.Axesではないようですので、TypeErrorを生成します: 'list'オブジェクトは呼び出し可能ではありません。それでもやっている。 – Rubenulis

+0

ああ、私は正しく見えませんでした。 'pyplot.axes'のソースをもう一度見てみると、現在のFigure上では' add_axes'が呼び出されています。私は上記の投稿を更新します。 – titusjan

+0

パーフェクト。ありがとうございました。また、スライダーの目的のために: 1)compute_initial_figure()の前にキャンバスを定義したい(self.canvas = FigureCanvas .__ init __(self、fig))。 2)同様に、この例ではFigureがFigureとして定義されていますが、後で使用するためにsel.figに変更しました。 – Rubenulis

関連する問題