wxpython使用matplot_测试怎么将MatPlotLib嵌入到wxPython中

展开全部

# -*- coding: utf-8 -*-

###############################################################################

#  wxMPL_test.pyw

#author: Wu Xuping

#Date : 2013-09-15

#测试如何将MatPlotLib嵌入到wxPython中

###############################################################################

import numpy as np

import wx

import matplotlib

# matplotlib采用WXAgg为后台,将matplotlib嵌入wxPython中

matplotlib.use("WXAgg")

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas

from matplotlib.figure import Figure

from matplotlib.backends.backend_wx import NavigationToolbar2Wx as NavigationToolbar

######################################################################################

class MPL_Panel(wx.Panel):

''''' #MPL_Panel面板,可以继承或者e69da5e6ba903231313335323631343130323136353331333361313235创建实例'''

def __init__(self,parent):

wx.Panel.__init__(self,parent=parent, id=-1)

self.Figure = matplotlib.figure.Figure(figsize=(4,3))

self.axes = self.Figure.add_axes([0.1,0.1,0.8,0.8])

self.FigureCanvas = FigureCanvas(self,-1,self.Figure)

#继承鼠标移动显示鼠标处坐标的事件

self.FigureCanvas.mpl_connect('motion_notify_event',self.MPLOnMouseMove)

self.NavigationToolbar = NavigationToolbar(self.FigureCanvas)

self.StaticText = wx.StaticText(self,-1,label='Show Help String')

self.SubBoxSizer = wx.BoxSizer(wx.HORIZONTAL)

self.SubBoxSizer.Add(self.NavigationToolbar,proportion =0, border = 2,flag = wx.ALL | wx.EXPAND)

self.SubBoxSizer.Add(self.StaticText,proportion =-1, border = 2,flag = wx.ALL | wx.EXPAND)

self.TopBoxSizer = wx.BoxSizer(wx.VERTICAL)

self.TopBoxSizer.Add(self.SubBoxSizer,proportion =-1, border = 2,flag = wx.ALL | wx.EXPAND)

self.TopBoxSizer.Add(self.FigureCanvas,proportion =-10, border = 2,flag = wx.ALL | wx.EXPAND)

self.SetSizer(self.TopBoxSizer)

#显示坐标值

def MPLOnMouseMove(self,event):

ex=event.xdata#这个数据类型是numpy.float64

ey=event.ydata#这个数据类型是numpy.float64

if ex  and ey :

#可以将numpy.float64类型转化为float类型,否则格式字符串可能会出错

self.StaticText.SetLabel('%10.5f,%10.5f' % (float(ex),float(ey)))

#也可以这样

#self.StaticText.SetLabel('%s,%s' % (ex,ey))

###############################################################################

#  MPL_Frame添加了MPL_Panel的1个实例

###############################################################################

class MPL_Frame(wx.Frame):

"""MPL_Frame可以继承,并可修改,或者直接使用"""

def __init__(self,title="MPL_Frame Example In wxPython",size=(800,500)):

wx.Frame.__init__(self,parent=None,title = title,size=size)

self.MPL = MPL_Panel(self)

self.Figure = self.MPL.Figure

self.axes = self.MPL.axes

self.FigureCanvas = self.MPL.FigureCanvas

self.RightPanel = wx.Panel(self,-1)

#测试按钮1

self.Button1 = wx.Button(self.RightPanel,-1,"TestButton",size=(100,40),pos=(10,10))

self.Button1.Bind(wx.EVT_BUTTON,self.Button1Event)

#创建FlexGridSizer

self.FlexGridSizer=wx.FlexGridSizer( rows=5, cols=1, vgap=5,hgap=5)

self.FlexGridSizer.SetFlexibleDirection(wx.BOTH)

#加入Sizer中

self.FlexGridSizer.Add(self.Button1,proportion =0, border = 5,flag = wx.ALL | wx.EXPAND)

self.RightPanel.SetSizer(self.FlexGridSizer)

self.BoxSizer=wx.BoxSizer(wx.HORIZONTAL)

self.BoxSizer.Add(self.MPL,proportion =-10, border = 2,flag = wx.ALL | wx.EXPAND)

self.BoxSizer.Add(self.RightPanel,proportion =0, border = 2,flag = wx.ALL | wx.EXPAND)

self.SetSizer(self.BoxSizer)

#MPL_Frame界面居中显示

self.Centre(wx.BOTH)

#按钮事件,用于测试绘图

def Button1Event(self,event):

x=np.arange(-10,10,0.25)

y=np.cos(x)

self.axes.plot(x,y,'--b*')

self.axes.grid(True)

self.FigureCanvas.draw()#一定要实时更新

########################################################################

#主程序测试

if __name__ == '__main__':

app = wx.PySimpleApp()

#frame = MPL2_Frame()

frame =MPL_Frame()

frame.Center()

frame.Show()

app.MainLoop()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值