python之matplotlib学习

来源:互联网 发布:网络大神级作家排行榜 编辑:程序博客网 时间:2024/04/30 09:24

学习《matplotlib for python Developers》笔记

python中使用matplotlib通常有以下三种方式

1,通过使用pyplot模块,提供类似Matlab命令的方式。

2,pylab模块,集合Matplotlib和Numpy使之接近Matlab(不被作者提倡)

3,面向对象方法,以python的方式使用,更加的pythonic。

三者之间面向对象的方法比价复杂,但是可以和GUI很好的融合。下面主要介绍第三种方法。使用实例如下:

import matplotlib.pyplot as pltimport numpy as npx=np.arange(0,10,0.1)y=np.random.randn(len(x))fig=plt.figure()ax=fig.add_subplot(111)l,=plt.plot(x,y)t=ax.set_title('random numbers')plt.show()
对于plot返回的是一个line2D的对象,故能在line2D的操作都使用于l。如:

l.set_color('red')#设置颜色

figure()返回一个Figure对象

add_subplot返回一个Axes对象

Matplotlib对象介绍

Object
Description
FigureCanvasContainer class for the Figure instanceFigureContainer for one or more Axes instancesAxesThe rectangular ares to hold the basic elements,such as lines,text,and so on

知道python与matplotlib交互有三种方式,与GUI交互采用第三种方法面向对象法。 首先知道Matplotlib的常见对象Figure,FigureCanvas,Axes。

需要导入一下几个模块:

[python] view plaincopy
  1. from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas  
  2. from matplotlib.figure import Figure  
  3. import numpy as np  

首先简单介绍一下FigureCanvs 这是一个wxWidgets对象,继承自wxPanel,故可以通过其嵌入到wxWidgets应用程序。下面学习一个简单的实例:

[python] view plaincopy
  1. from numpy import arange, sin, pi  
  2.   
  3. from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas  
  4. from matplotlib.figure import Figure  
  5. import wx  
  6. class CanvasFrame(wx.Frame):  
  7.   
  8.     def __init__(self):  
  9.         wx.Frame.__init__(self,None,-1,  
  10.                          'CanvasFrame',size=(550,350))  
  11.   
  12.         self.SetBackgroundColour(wx.NamedColor("WHITE"))  
  13.   
  14.         self.figure = Figure()  
  15.         self.axes = self.figure.add_subplot(111)  
  16.         t = arange(0.0,3.0,0.01)  
  17.         s = sin(2*pi*t)  
  18.   
  19.         self.axes.plot(t,s)  
  20.         self.canvas = FigureCanvas(self, -1self.figure)  
  21.         self.sizer = wx.BoxSizer(wx.VERTICAL)  
  22.         self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)  
  23.         self.SetSizer(self.sizer)  
  24.         self.Fit()  
  25.   
  26.   
  27. class App(wx.App):  
  28.   
  29.     def OnInit(self):  
  30.         'Create the main window and insert the custom frame'  
  31.         frame = CanvasFrame()  
  32.         frame.Show(True)  
  33.   
  34.         return True  
  35.   
  36. app = App(0)  
  37. app.MainLoop()  

同笔记1介绍的面向对象方法基本一致,最后将figure加到FigureCanvas上面即可完成图像的绘制。

再前面导入from matplotlib.backends.backend_wx import NavigationToolbar2Wx可以创建导航工具栏,需要添加BoxSizer()对象来控制排版。


0 0
原创粉丝点击