我正在使用wx和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
答案 0 :(得分: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
吗?