2016-09-21 37 views
0

私はパネルに2x2のFlexGridSizerを持っており、同時に4つの異なるmatplotlibフィギュアを独自のツールバーで挿入したいと考えています。複数のmatplotlibフィギュアをwxPythonに埋め込む

私はwxPythonとOOPの初心者であるため、いくつかのコードをテストして、それらを私とマージしようとするとかなり混乱します。

ここで私は

class Pagina(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 

     self.boton_descargar = wx.Button(self, -1, label=u"Descargar") 
     self.boton_desconectar = wx.Button(self, -1, label=u"Desconectar") 

     sizer = wx.BoxSizer(wx.VERTICAL) 
     subsizer1 = wx.BoxSizer(wx.HORIZONTAL) 
     subsizer2 = wx.FlexGridSizer(rows=2, cols=2) 

     sizer.Add(subsizer1, 0, wx.EXPAND | wx.ALL, 0) 
     sizer.Add(subsizer2, 1, wx.EXPAND | wx.ALL, 0) 
     sizer.Add(self.boton_desconectar, 0, wx.ALIGN_RIGHT | wx.RIGHT, 10) 
     subsizer1.Add(self.boton_descargar, 0, wx.ALL, 10) 

     self.Bind(wx.EVT_BUTTON, self.onClick_descargar, self.boton_descargar) 
     self.Bind(wx.EVT_BUTTON, self.onClick_desconectar, self.boton_desconectar) 

     self.SetSizer(sizer) 

    def onClick_descargar(self, event): 
     HiloDescarga() 

    def onClick_desconectar(self, event): 
     pass 

HiloDescarga数字を入れたいwx.Notebookのページクラスの作品は、実際にいくつかのテキスト行をダウンロードするために立ち上げたスレッド、プロセスデータと、このようにプロットする(第四です図は同じものです)。

import matplotlib.pyplot as plt 

line, = plt.plot(range(len(x)), x, '-', linewidth=1) 
line, = plt.plot(range(len(x)), f, 'y-', linewidth=1) 
plt.xlabel('x') 
plt.ylabel('y') 
plt.title(r'title1') 
plt.grid() 
plt.figure() 

line, = plt.plot(range(len(y)), y, 'r-', linewidth=1) 
line, = plt.plot(range(len(y)), g, 'y-', linewidth=1) 
plt.xlabel('x') 
plt.ylabel('y') 
plt.title(r'title2') 
plt.grid() 
plt.figure() 

line, = plt.plot(range(len(z)), z, 'g-', linewidth=1) 
line, = plt.plot(range(len(z)), h, 'y-', linewidth=1) 
plt.xlabel('x') 
plt.ylabel('y') 
plt.title(r'title3') 
plt.grid() 

plt.show() 

したがって、数値は離れたウィンドウでポップしています。あなたがスニペットや少なくともオリエンテーションを与えることができれば、プロットコードを少し変更しても、私は分かりません。どんな助けも歓迎されます。

答えて

2

あなたが1つの図を埋め込んだ例に従うだけで、作成したい図のそれぞれにいくつかのメンバーをインスタンス化するだけです。ここ は簡単な例です:私はself.axes

ホープ配列self.figsにおける各図のインスタンスと各図の軸の各インスタンスを保存した

import matplotlib 
matplotlib.use('WXAgg') 
from matplotlib.figure import Figure 
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
import wx 


class MyFrame(wx.Frame): 
    def __init__(self, parent, nbFigures=4): 
     super(MyFrame, self).__init__(parent) 
     sizer = wx.BoxSizer(wx.VERTICAL) 
     self.figs = [Figure(figsize=(2,1)) for _ in range(nbFigures)] 
     self.axes = [fig.add_subplot(111) for fig in self.figs] 
     self.canvases = [FigureCanvas(self, -1, fig) for fig in self.figs] 
     for canvas in self.canvases: 
      sizer.Add(canvas, 0, wx.ALL, 5) 
     self.SetSizer(sizer) 

app = wx.App() 
frm = MyFrame(None) 
frm.Show() 
app.MainLoop() 

enter image description here

ことプットあなたは正しい軌道にいます

+0

私はこれを1分で試してみます。私は疑いがある。プロット作業のために新しいスレッドを開始することをお勧めしますか?私のスタンドアロンの作図スクリプトにはしばらく時間がかかります。 – Javier

+0

申し訳ありませんが、本当にあなたを助けることはできません –

関連する問題