Python matplotlib绘图必知必会
简介
matplotlib是python的一个数据可视化库,matplotlib.pyplot是matplotlib的一个快捷绘图命令字库,使用前要加上import matplotlib.pyplot as plt
。
该教程基于MOOC的北京理工大学嵩天教授的Python数据分析与展示课程。
绘图
例1
1 2 3 4 5 6 7
| import matplotlib.pyplot as plt plt.plot([3,1,4,5,2]) plt.title("Test") plt.xlabel("Time") plt.ylabel("Grade") plt.savefig('test',dpi=600) plt.show()
|
例2
1 2 3 4 5 6 7
| import matplotlib.pyplot as plt plt.plot([0,2,4,6,8],[3,1,4,5,2]) plt.title("Test") plt.xlabel("Time") plt.ylabel("Grade")
plt.show()
|
例3-子绘图
1 2 3 4 5 6 7 8 9 10 11 12
| import matplotlib.pyplot as plt plt.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’ |
瘦菱形 |
‘<’ |
左三角 |
‘*’ |
星形 |
‘|’ |
垂直线 |
无标记
1 2 3 4 5
| import matplotlib.pyplot as plt import 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()
|
有标记
1 2 3 4 5 6 7 8 9
| import matplotlib.pyplot as plt import 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
1 2 3 4 5 6 7
| import matplotlib.pyplot as plt import 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
1 2 3 4 5 6 7 8
| import numpy as np import 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() |
在图形中增加带箭头的注释 |
任意位置标注
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import numpy as np import 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()
|
任意位置箭头标注
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import numpy as np import 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()
|
子绘图区域进阶
1 2 3 4 5 6 7 8
| import matplotlib.gridspec as gridspec gs=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])
|