wxpython使用matplot-凯发k8官方网
展开全部
# -*- 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('.5f,.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()
总结
以上是凯发k8官方网为你收集整理的wxpython使用matplot_测试怎么将matplotlib嵌入到wxpython中的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: python条形图一直长_条形图的坐标轴
- 下一篇: python网络爬虫入门小程序_pyth