Python matplotlib绘图必知必会
简介
matplotlib是python的一个数据可视化库,matplotlib.pyplot是matplotlib的一个快捷绘图命令字库,使用前要加上import matplotlib.pyplot as plt。
该教程基于MOOC的北京理工大学嵩天教授的Python数据分析与展示课程。
绘图
例1
| 12
 3
 4
 5
 6
 7
 
 | import matplotlib.pyplot as pltplt.plot([3,1,4,5,2])
 plt.title("Test")
 plt.xlabel("Time")
 plt.ylabel("Grade")
 plt.savefig('test',dpi=600)
 plt.show()
 
 | 

例2
| 12
 3
 4
 5
 6
 7
 
 | import matplotlib.pyplot as pltplt.plot([0,2,4,6,8],[3,1,4,5,2])
 plt.title("Test")
 plt.xlabel("Time")
 plt.ylabel("Grade")
 
 plt.show()
 
 | 

例3-子绘图
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 
 | import matplotlib.pyplot as pltplt.subplot(2,1,1)
 plt.plot([0,2,4,6,8],[3,1,4,5,2])
 plt.title("Test")
 plt.xlabel("Time")
 plt.ylabel("Grade")
 
 plt.subplot(2,1,2)
 plt.plot([0,2,4,6,8],[3,1,4,5,2])
 plt.xlabel("Time2")
 plt.ylabel("Grade2")
 plt.show()
 
 | 

例4-多条曲线放在一张图中
plt.plot(x,y,format_string,**kwargs)
- format_string:设置颜色、风格、标记。
| 颜色字符 | 说明 | 颜色字符 | 说明 | 
| ‘b’ | 蓝色 | ‘m’ | 洋红色 | 
| ‘g’ | 绿色 | ‘y’ | 黄色 | 
| ‘r’ | 红色 | ‘k’ | 黑色 | 
| ‘c’ | 青绿色 | ‘w’ | 白色 | 
| ‘#008000’ | RGB某颜色 | ‘0.8’ | 灰度值字符串 | 
| 风格字符 | 说明 | 
| ‘-’ | 实线 | 
| ‘–’ | 破折线 | 
| ‘-.’ | 点划线 | 
| ‘:’ | 虚线 | 
| ‘’ ’ ’ | 无线条 | 
| 标记字符 | 说明 | 标记字符 | 说明 | 标记字符 | 说明 | 
| ‘.’ | 点 | ‘1’ | 下花三角 | ‘h’ | 竖六边形 | 
| ‘,’ | 像素(极小点) | ‘2’ | 上花三角 | ‘H’ | 横六边形 | 
| ‘o’ | 实心圈 | ‘3’ | 左花三角 | ‘+’ | 十字 | 
| ‘v’ | 倒三角 | ‘4’ | 右花三角 | ‘x’ | x | 
| ‘^’ | 上三角 | ‘s’ | 实心方形 | ‘D’ | 菱形 | 
| ‘>’ | 右三角 | ‘p’ | 实心五角 | ‘d’ | 瘦菱形 | 
| ‘<’ | 左三角 | ‘*’ | 星形 | ‘|’ | 垂直线 | 
无标记
| 12
 3
 4
 5
 
 | import matplotlib.pyplot as pltimport numpy as np
 a=np.arrange(10)
 plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)
 plt.show()
 
 | 

有标记
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | import matplotlib.pyplot as pltimport numpy as np
 a=np.arange(10)
 
 
 
 
 plt.plot(a,a*1.5,'go-',a,a*2.5,'rx',a,a*3.5,'*',a,a*4.5,'b-.')
 plt.show()
 
 | 

显示中文
默认情况下,pyplot不支持显示中文,下边为显示中文的方法
例1 使用matplotlib.rcParams
| 12
 3
 4
 5
 6
 7
 
 | import matplotlib.pyplot as pltimport matplotlib
 
 matplotlib.rcParams['font.family']='SimHei'
 plt.plot([3,1,4,5,2])
 plt.ylabel("纵轴",fontsize=20)
 plt.show()
 
 | 

rcParams的属性:
| 属性 | 说明 | 
| ‘font.family’ | 字体名称 | 
| ‘font.style’ | 字体风格,‘normal’/‘italic’ | 
| ‘font.size’ | 字体大小,整数/‘large’/‘x-small’ | 
例2 增加属性fontproperties
| 12
 3
 4
 5
 6
 7
 8
 
 | import numpy as npimport matplotlib.pyplot as plt
 a=np.arange(0.0,5.0,0.02)
 
 plt.xlabel('时间',fontproperties='SimHei',fontsize=20)
 plt.ylabel('振幅',fontproperties='SimHei',fontsize=20)
 plt.plot(a,np.cos(2*np.pi*a),'r--')
 plt.show()
 
 | 

文本显示
文本显示是指在图中特定点增加文本注释
| 函数 | 说明 | 
| plt.xlabel() | 对x轴增加文本标签 | 
| plt.ylabel() | 对y轴增加文本标签 | 
| plt.title() | 图形的标题标签 | 
| plt.text() | 在图形任意位置增加文本 | 
| plt.annotate() | 在图形中增加带箭头的注释 | 
任意位置标注
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | import numpy as npimport matplotlib.pyplot as plt
 
 a=np.arange(0.0,5.0,0.02)
 plt.plot(a,np.cos(2*np.pi*a),'r--')
 
 plt.xlabel('时间',fontproperties='SimHei',fontsize=15,color='green')
 plt.ylabel('振幅',fontproperties='SimHei',fontsize=15)
 plt.title('正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
 
 plt.text(2,1,r'$\mu=100$',fontsize=15)
 
 plt.axis([-1,6,-2,2])
 plt.grid(True)
 plt.show()
 
 | 

任意位置箭头标注
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 
 | import numpy as npimport matplotlib.pyplot as plt
 
 a=np.arange(0.0,5.0,0.02)
 plt.plot(a,np.cos(2*np.pi*a),'r--')
 
 plt.xlabel('时间',fontproperties='SimHei',fontsize=15,color='green')
 plt.ylabel('振幅',fontproperties='SimHei',fontsize=15)
 plt.title('正弦波实例 $y=cos(2\pi x)$',fontproperties='SimHei',fontsize=25)
 
 
 
 plt.annotate(r'$\mu =100$',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=2))
 
 plt.axis([-1,6,-2,2])
 plt.grid(True)
 plt.show()
 
 | 

子绘图区域进阶
| 12
 3
 4
 5
 6
 7
 8
 
 | import matplotlib.gridspec as gridspecgs=gridspec.GridSpec(3,3)
 
 ax1=plt.subplot(gs[0,:])
 ax2=plt.subplot(gs[1,:-1])
 ax3=plt.subplot(gs[1:,-1])
 ax4=plt.subplot(gs[2,0])
 ax5=plt.subplot(gs[2,1])
 
 | 
