Matplotlib库的使用
- Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。
- matplotlib.pyplot是绘制各类可视化图形的命令字库,相当于快捷方式。
import matplotlib.pyplot as plt
plt.plot([3,1,4,5,2])
plt.ylabel("Grade")
plt.savefig('test',dip=600) ##存储成PNG的格式,默认PNG格式,可以通过dip修改输出质量
plt.show()
import matplotlib.pyplot as plt
plt.plot([0,2,4,6,8],[3,1,4,5,2])##plt.plot(x,y)当由2各以上参数时,按照X轴和Y轴顺序绘制数据点。
plt.ylabel("Grade")
plt.axis([-1,10,0,6])##是X和Y轴的范围
plt.show()
pyplot的绘图区域:在全域绘图区域中创建一个分区体系,并定位到一个子绘图区域。
plt.subplot(nrows,ncols,plot_number)
plt.subplot(3,2,4)
plt.subplot(324)
举个栗子:
import numpy as np
import matplotlib.pyplot as plt
def f(t):
return np.exp(-t)*np.cos(2*np.pi*t) ##定义一个能量衰减函数
a=np.arange(0.0,5.0,0.02)##随机生成一个数组a
plt.subplot(211)##将绘图区域分成2行一列,选择二第一个区域作图
plt.plot(a,f(a))
plt.subplot(2,1,2)
plt.plot(a,np.cos(2*np.pi*a),"r--")
plt.show()
plt.plot(x,y,format_string,kwargs)
- x:x轴数据,列表或者数组,可选。
- y:y轴数据,列表或数组。
- format_string:控制曲线的格式字符串,可选。
- kwargs:第二组或更多(x,y,format_string)
import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)
plt.plot(a,a*1.5,a,a*2.5,a,a*3.5,a,a*4.5)
plt.show()
format_string:控制曲线的格式字符串,可选有颜色字符串、风格字符和标记字符组成。
颜色字符 | 说明 |
---|---|
‘b’ | 蓝色 |
‘g’ | 绿色 |
‘r’ | 红色 |
‘c’ | 青绿色 |
‘#008000’ | RGB某颜色 |
‘m’ | 洋红色 |
‘y’ | 黄色 |
‘k’ | 黑色 |
‘w’ | 白色 |
‘0.8’ | 灰度值字符串 |
风格字符
风格字符 | 说明 |
---|---|
‘_’ | 实线 |
‘__’ | 破折线 |
‘_.’ | 点划线 |
‘:’ | 虚线 |
‘’ ’ ’ | 无线条 |
当绘制多条曲线时,各条曲线的x不能省。
format_string:控制曲线的格式字符串,可选
标记字符 | 说明 |
---|---|
‘.’ | 点标记 |
‘,’ | 像素标记(极小点) |
‘o’ | 实心圈标记 |
‘v’ | 倒三角标记 |
‘^’ | 上三角标记 |
’>’ | 右三角标记 |
‘<’ | 左三角标记 |
‘1’ | 下花三角标记 |
‘2’ | 上花三角标记 |
‘3’ | 左花三角标记 |
‘4’ | 右花三角标记 |
‘s’ | 实心方形标记 |
‘p’ | 实心五角标记 |
‘*’ | 星形标记 |
‘h’ | 竖六边形标记 |
’H’ | 横六边形标记 |
‘+’ | 十字标记 |
‘x’ | x标记 |
‘D’ | 菱形标记 |
‘d’ | 瘦菱形标记 |
‘竖线’ | 垂直线标记 |
小试牛刀
import matplotlib.pyplot as plt
import numpy as np
a=np.arange(10)
plt.plot(a,a*1.5,'g-o',a,a*2.5,'r-x',a,a*3.5,'-*',a,a*4.5,'b-.') ##第一条绿色的线是实心绿点,第二条线是红色X,第三条是蓝色*,第四条是深蓝._形状
plt.show()
关于plt.plot(x,y,formaat_string,**kwargs)中的参数
- **kwargs:第二组或更多(x,y,format_string)
- color:控制颜色,color=‘green’
- linestyle:线条风格,linestyle=‘dashade’
- marker:标记风格,marker=‘o’
- markerfacecolor:标记颜色,markerfacecolor=‘blue’
- markersize:标记尺寸,markersize=20
pyplot无法直接使用汉语,需要进行修改。
pyplot的中文显示:第一种方法:rcParams修改字体。
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='SimHei'##使用rcParams将字体改为细黑
plt.plot([3,1,4,5,2])
plt.ylabbel("纵轴(值)
plt.savefig('test',dip=600)
plt.show()
rcParams函数对于字体和字号大小的修改
属性 | 说明 |
---|---|
‘font.family’ | 用于显示字体的名字 |
‘font.style’ | 字体风格,正常’normal’或斜体’italic’ |
font.size’ | 字体大小,整数字号或者’large’、‘x-small’ |
常见的中文字体类型
中文字体 | 说明 |
---|---|
‘SimHei’ | 中文黑体 |
‘Kaiti’ | 中文楷体 |
‘LiSu’ | 中文隶书 |
‘FangSong’ | 中文幼圆 |
‘STSong’ | 华文宋体 |
例子
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['font.family']='STsong'##使用这中修改的话,是全局字体格式的修改
matplotlib.rcParams['font.size']=20
a=np.arange(0.0,5.0,0.02)
plt.xlabel('横轴:时间')
plt.ylabel('纵轴:振幅')
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
修改局部字体方法:
在有中文输出的地方,使用fonproperties()
import numpy as np
import matplotlib.pyplot as plt
a=np.arange(0.0,5.0,0.02)
plt.xlabel('横轴:时间',fontproperties='SimHei',fontsize=15)
plt.ylabel('纵轴:振幅',fontproperties='SimHei',fontsize=15)
plt.plot(a,np.cos(2*np.pi*a),'r--')
plt.show()
pyplot的文本显示函数
函数 | 说明 |
---|---|
plt.xlabel() | 对X轴增加文本标签 |
plt.ylabel() | 对Y轴增加文本信息 |
plt.title() | 对图形整体增加文本标签 |
plt.text() | 对任意位置增加文本 |
plt.annotate() | 在图形中增加带箭头的注释 |
实例
import numpy as np
import matplotlib.pyplot as plt
import re
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Πx)',fontproperties='SimHei',fontsize=25)###在python中使用常见的数学公式,可以结合LateX语法实现
plt.text(2,1,'μ=100',fontsize=15)
plt.axis([-1,6,-2,2])##在-1和6的地方展示该字符
plt.grid(True)
plt.show()
plt.annotate()函数的使用:
plt.annotate(S,xy=arrow_crd,xytest=text_crd,arrowprops=dict)
import numpy as np
import matplotlib.pyplot as plt
import re
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Πx)',fontproperties='SimHei',fontsize=25)###在python中使用常见的数学公式,可以结合LateX语法实现
plt.annotate('μ=100',xy=(2,1),xytext=(3,1.5),arrowprops=dict(facecolor='black',shrink=0.1,width=1.5))###使用plt.annotate()函数添加箭头指标
plt.axis([-1,6,-2,2])##在-1和6的地方展示该字符
plt.grid(True)
plt.show()
pyplot子绘图区域的设计
plt.subplot2grid()函数的使用
plt.subplot2grid(GridSpec,CurSpec,colspan=1,rowspan=1)
理念:设定网格,选中网格,确定选中行列区域数量,编号从0开始。
如对a2区域进行设计
plt.subplot2grid((3,3),(1,0),colspan=2)
##第一个参数是一个元组,表示把作图区域分为几个部分,在本例中表明分为3行3列9个部分,第二个参数显示的是选中当前区域第1行,第0列,colspan表示的是列宽的延长,此处表示延长2个单位。
如何用该函数选中每个区域并进行绘图?
plt.subplot2grid((3,3),(0,0),clospan=3)
plt.subplot2grid((3,3),(1,0),clospan=2)
plt.subplot2grid((3,3),(1,2),rawspan=2))
plt.subplotgrid((3,3),(2,0))
gridSpec类
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])
本章小结
pyplot()函数的画图基本操作:
1.基本参数、绘图、坐标轴等
2.线条的格式和风格
3.基本文本字符添加
4.subplot()和subplot2grid()对不同作图亚区的设计