2014-12-19 91 views
0

我使用WX與matplotlib一起,創建一個簡單的散點圖matplotlib設置軸,平移和縮放控件

#!/usr/bin/python 
# example.py 

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

import wx 


x = [1,2] 
y = [1,2] 

class MainFrame(wx.Frame): 
    def __init__(self, parent, title): 
     super(MainFrame, self).__init__(parent, title=title, size = (600,300)) 
     self.CreatePanel() 
     self.Show() 



    def CreatePanel(self): 
     self.mainpanel = wx.Panel(self,style=wx.RAISED_BORDER) 

     self.mainpanel.fig = Figure(figsize=(1,1)) 
     self.mainpanel.a = self.mainpanel.fig.add_subplot(111) 
     self.mainpanel.b = self.mainpanel.a.scatter(x,y) 

     self.mainpanel.canvas = FigureCanvasWxAgg(self.mainpanel, -1, self.mainpanel.fig) 

     self.mainpanel.sizer = wx.BoxSizer(wx.HORIZONTAL) 
     self.mainpanel.sizer.Add(self.mainpanel.canvas, 1, wx.ALL | wx.LEFT | wx.GROW , 5) 
     self.mainpanel.SetSizer(self.mainpanel.sizer) 


app = wx.App(0) 
frame = MainFrame(None, title="My App") 
app.MainLoop() 

在matplotlib的pyplot類提供了一個直接的工具欄,我想有一個類似的事情,但那裏我不能自定義那個工具欄,

所以我想知道如何設置x,y限制,平移圖和框放大情節,而不使用該工具欄。

在此先感謝

PS。我是一個很值得新手到Python和GUI編程,請指向任何惡意代碼的做法我可以遵循:P

回答

1

您可以輕鬆地從pyplot添加工具欄WX應用:

from matplotlib.backends.backend_wxagg import NavigationToolbar2WxAgg as NavigationToolbar 

...  
def CreatePanel(self): 
    ... 
    self.toolbar = NavigationToolbar(self.mainpanel.canvas) 
    ... 
    self.mainpanel.sizer.Add(self.toolbar, 0, wx.EXPAND) 

PS。我不明白爲什麼你有這個數字和其他一切屬性爲self.mainpanel?它不會給你AttributeError

+0

這個想法是不使用該工具欄,並且它不會給我屬性錯誤,因爲我創建了該屬性。right – Rishabh 2014-12-19 07:50:03

+0

爲什麼你不想使用它?如果您想對其進行定製,那麼對它進行子類化並使用它來做所有你想做的事情。 – 2014-12-19 07:51:47

+0

爲簡單的理由,它是一個工具欄,我希望能夠直接將值輸入到文本框中,並能夠設置這些東西 – Rishabh 2014-12-19 08:09:55