matplotlib中常用的绘图功能集成在pyplot模块下
画板、画布设置
matplotlib中的画板设置一般通过figure()设置,常用的参数有figsize,facecolor,分别对应设置画板比例以及画板背景色,figsize的参数为元组形式的比例如(6,4)表示长宽比为6:4
而画布的设置一般通过plt.subplot()设置,绘制2d图中,参数一般有三个,如参数设置为2,2,1,则会将画板分成2*2块,也就是四块,最后一个参数1表示索引,切分后的画板从左至右,从上到下的索引分别为1,2,3,4.所以1对应左上角的索引.注意索引的表示方式可以写成(2,2,2)也可以表示为222这样的连续数值
注意:
- 在使用matplotlib绘制图像的编码过程中,一般分为面向对象绘制以及面向过程绘制.一般来说,面向过程绘制是全程调用plt进行函数调用,而面向对象绘制一般会将画板和画布进行复制,用实力化的画板和画布对象进行方法调用
- 使用面向过程,也就是不实例化画板画布对象进行方法调用的话,正常的绘制流程需要手动创建画板figure,以及画布subplot,如不手动进行创建,则会自动创建画板画布对象.例如在未创建画板的情况下创建subplot,则也会默认创建一个画板对象.
- 在纯面向过程编码的时候,如进行了多个画布subplot的绘制,若需要使用plt.方法()对不同subplot进行渲染的过程中,会采取就近原则
import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(6,4),facecolor='w')
plt.subplot(221)
plt.subplot(224)
plt.grid()
plt.show()
这里使用plt.grid()函数的作用为网格绘制,根据就近原则,绘制在了2,2,2,也就是右下角的子图上.
如果采用面向对象绘制的话整个流程会更加清晰
这里将两个画布分别实力化为axes1和axes2,通过对象调用实例方法grid()会更加方便易懂
plt.show()
plt.show()会渲染所有已经绘制的图表,然后会清空已经绘制的图表
grid()网格线
上述演示的grid()网格线,分别使用了面向过程和面向对象两种方式,这里还需提及其参数axis,可以赋值'x','y'分别代表在x轴上生成竖线和在y轴上生成横线
import matplotlib.pyplot as plt
figure1 = plt.figure(figsize=(6, 4))
axes1 = plt.subplot(221)
axes2 = plt.subplot(224)
axes1.grid(axis="x")
axes2.grid(axis="y")
plt.show()
坐标轴刻度限制设置
面向过程
使用plt.xlim()调整x轴范围,参数为(最小值,最大值)
使用plt.ylim()调整y轴范围,参数为(最小值,最大值)
import matplotlib.pyplot as plt
figure1 = plt.figure(figsize=(6, 4))
axes1 = plt.subplot(221)
plt.xlim(0, 2)
axes2 = plt.subplot(224)
plt.ylim(0, 2)
axes1.grid(axis="x")
axes2.grid(axis="y")
plt.show()
面向对象
使用axes1.set_xlim()调整x轴范围,参数为(最小值,最大值)
使用axes1.set_ylim()调整y轴范围,参数为(最小值,最大值)
import matplotlib.pyplot as plt
figure1 = plt.figure(figsize=(6, 4))
axes1 = plt.subplot(221)
axes2 = plt.subplot(224)
axes1.set_xlim(0, 2)
axes2.set_ylim(0, 2)
axes1.grid(axis="x")
axes2.grid(axis="y")
plt.show()
直接配置坐标轴参数
使用axes1.axis()来进行配置
参数为列表:[xmin,xmax,ymin,ymax]
import matplotlib.pyplot as plt
figure1 = plt.figure(figsize=(6, 4))
axes1 = plt.subplot(221)
axes2 = plt.subplot(224)
axes1.axis([0, 2, -1, 1])
axes2.axis([0, 2, -1, 1])
plt.show()
设置刻度和刻度名称
面向过程
使用plt.xticks()来设置x轴刻度及刻度名称,参数为两个array_like的容器,分别为刻度,及对应的刻度名称
使用plt.yticks()来设置y轴刻度及刻度名称,参数为两个array_like的容器,分别为刻度,及对应的刻度名称
import matplotlib.pyplot as plt
import numpy as np
figure1 = plt.figure(figsize=(6, 4))
axes1 = plt.subplot(221)
plt.xticks(np.linspace(0, 2 * np.pi, 5), [0, "pi/2", "pi", "3pi/2", "2pi"])
axes2 = plt.subplot(224)
plt.show()
面向对象
面向对象使用axes1.set_xticks()配置x轴刻度,使用.set_yticks()配置y轴刻度
使用axes1.set_xticklabels()配置x轴刻度名称,使用.set_yticklabels()配置y轴刻度名称
import matplotlib.pyplot as plt
import numpy as np
figure1 = plt.figure(figsize=(6, 4))
axes1 = plt.subplot(221)
axes2 = plt.subplot(224)
axes1.set_xticks(np.linspace(0, 2 * np.pi, 5))
axes1.set_xticklabels([0, "pi/2", "pi", "3pi/2", "2pi"])
plt.show()