Matplotlib 将大部分的绘图对象都封装成为对象,故理论上所有的图表元素(如 Line2D, Text,Label 等)都是对象,都可以将其在图表中提取出来并配置实例的属性。同时,Matplotlib 提供了一套类似于 Matlab 的 API 接口,可以让我们能够实现快速绘图而无需进行相对于复杂的对象操作。快速绘图适合于简单的绘图程序,而面向对象则适合于复杂的大型程序。
- #-*- coding:utf-8 -*-
- import matplotlib.pyplot as plt
- import numpy as np
- import pandas as pd
- %pylab
- %matplotlib inline
- #创建示例用的x轴数据
- x=np.linspace(-2,2,100)
- #定义需要用到的计算函数
- def func(inx):
- return (-np.exp(-x))*np.sin(np.pi*x)
- line,=plt.plot(x,func(x))#只返回第一个对象
- line1,
- line2 = plt.plot(x, -x * 2, x, np.sin(x * *2 * np.pi))#返回两个对象,分别赋值在line1和line2上
设置曲线的属性:
- #通过Line2D的Setter方法(set_*)进行设置;
- #主要是通过返回的Line2D对象进行设置,这里的设置非常多,可以参考手册内容
- line1,line2=plt.plot(x,-x*2,x,np.sin(x**2*np.pi))
- #设置line1的属性
- line1.set_linewidth(2)
- line1.set_color('b')
- line1.set_linestyle("--")
- #设置line2的属性
- line2.set_color('k')
- line2.set_linestyle('-')
- #通过pyplot.setp()进行批量设置;
- line1,line2=plt.plot(x,-x*2,x,np.sin(x**2*np.pi))
- plt.setp(line1,color='r',linewidth=2)#采用关键字参数
- plt.setp(line2,"color",'k','linewidth',2,'linestyle','-.')#采用变量形式,这时候属性必须用字符串形式成对表示(数值除外)
- ###-----------------------------------------------------------------------------------------------------------
- ##其它的一些常用设置
- line1,=plt.plot(x,-x**2,label=r"$-x^2$")
- line2,=plt.plot(x,np.sin(2*x**2*np.pi),label=r'$\sin(2\pi\dotx^2)$')
- #设置的标记
- plt.annotate(unicode("Original",encoding="utf-8"),xy=(0,0),
- xytext=(0.5,1.5),
- arrowprops=dict(facecolor='red',arrowstyle='-|>')
- )
- #设置图标的标题:
- plt.title("Matplotlib Learning")
- #设置x和y轴的名称
- plt.xlabel("x value")
- plt.ylabel("result value")
- #设置x轴和y轴的范围:xlim和ylim
- plt.xlim(-2.0,1)
- plt.ylim(-2,2)
- #设置图例
- plt.legend(loc='upper left')
- plt.show()
MATLAB 和 pyplot 都有当前图和当前 axe 的概念。所有的作图命令都作用在当前 axe。
这里有一点要注意,当选定了子图后,那么这个子图就是当前选定子图,后续所有操作都是在这个子图上,可以通过 gca() 获取当前的 axe。
- ax=plt.subplot(221)#创建2*2个子图,并选定第一个(一般选定的顺序是从左到右,从上到下)
- #print type(ax),打印显示器为AxesSubplot对象
- #<class 'matplotlib.axes._subplots.AxesSubplot'>
- ax.plot(np.arange(0,10),np.arange(0,10))
- plt.plot(np.arange(0,10),-np.arange(0,10),'k--')#两种操作等价
- #------------------------------------------------
- ax2=plt.subplot(222,axisbg='y')#选取第一行,第二个axe,并设置背景颜色为黄色
- ax2.plot(np.arange(0,10),np.arange(0,10))
- plt.plot(np.arange(0,10),-np.arange(0,10),'y-')
- #设置其y轴的值不显示,x轴只显示[0,5,9]
- plt.yticks([])
- plt.xticks([0,5,9])
- #------------------------------------------------
- ax3=plt.subplot(212)#重新建立分区,并选定第二个,这时初始的分区方法被覆盖。
- ax3.plot(x,func(x),label="new value")
- ax3.legend(loc='best')
来源: http://www.cnblogs.com/zhanghaohong/p/6674474.html