matplotlib设置轴,平移和缩放控件

时间:2014-12-19 07:39:19

标签: python user-interface matplotlib plot wxpython

我正在使用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

1 个答案:

答案 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吗?