1、生成多个视图(画板):
在matplotlib 中,一个figure即为一个画板,用plt.figure()创建一个新画板,如果只有一个画板的话这句可以省略。
#创建第一个视图(画板)
plt.figure(1)
#第一个画板的内容
#…
#创建第二个视图(画板)
plt.figure(2)
#第二个画板的内容
#…
#切换到第一个画板
plt.figure(1)
#继续第一个画板的内容
#…
2.一个视图中绘制多个子图:
在matplotlib 中,一个figure视图可以包括多个子图(Axes),通过subplot() 函数实现。
subplot(numRows, numCols, plotNum)
numRows声明视图中子图有多少行,numCols声明视图中子图有多少列,plotNum则声明此时进行绘制的是第一个子图。子图的序号按照以行优先的原则,从左到右,从上到下。
如:subplot(2,2,3)表示开始绘制4个子图的第3个(左下角位置)子图(蓝色)。
3.绘制多条曲线:
import matplotlib.pyplot as plt
from matplotlib.collections import EventCollection
import numpy as np
# Fixing random state for reproducibility
np.random.seed(19680801)
#定义好两条曲线的数据
xdata = np.random.random([2, 10])
xdata1 = xdata[0, :]
xdata2 = xdata[1, :]
xdata1.sort()
xdata2.sort()
ydata1 = xdata1 ** 2
ydata2 = 1 - xdata2 ** 3
#绘制图画
fig = plt.figure() #生成一个画板
ax = fig.add_subplot(1, 1, 1) #定义有着1行1列子图的视图并取第一个
ax.plot(xdata1, ydata1, color='tab:blue') #第一条曲线
ax.plot(xdata2, ydata2, color='tab:orange')#第二条曲线
# 定义坐标轴范围
ax.set_xlim([0, 1])
ax.set_ylim([0, 1])
ax.set_title('line plot with data points')
plt.show()
结果如下:
4.下面给一个综合的例子:
import numpy as np
import matplotlib.pyplot as plt
#定义好横纵坐标数据
x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)
plt.figure(1) #第一个画板
ax1=plt.subplot(2, 1, 1) #构建2行1列的视图,选定第一个子图
ax1.plot(x1, y1, color='tab:blue') #第1条曲线
ax1.plot(x2, y2, color='tab:orange') #第2条曲线
ax1.set_title('ax1 with two lines') #子图1的标题
ax2=plt.subplot(2, 1, 2) #在2行1列的视图中,选定第二个子图
ax2.plot(x1, y1, color='tab:blue')
ax2.set_title('ax2 with one line') #子图2的标题
plt.xlabel('x label')
plt.ylabel('y label')
plt.suptitle('A tale of 2 subplots') #该视图的标题
plt.figure(2) #第2个画板
ax2=plt.subplot(2, 1, 2)
ax2.plot(x1, y1, color='tab:blue')
plt.show()
结果如图:
5.子图的不规则划分:
将整个图按照2 * 2划分,前两个为plt.subplot(2,2,1)和plt.subplot(2,2,2),最后一个需要对整个图进行重新划分,按照2 * 1划分,为plt.subplot(2,1,2)
import numpy as np
import matplotlib.pyplot as plt
#定义好横纵坐标数据
x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)
ax1=plt.subplot(2, 2, 1)
ax1.plot(x2, y2, color='tab:orange')
ax2=plt.subplot(2, 2, 2)
ax2.plot(x1, y1, color='tab:blue')
ax3=plt.subplot(2, 1, 2)
ax3.plot(x2, y2, color='tab:orange')
ax3.plot(x1, y1, color='tab:blue')
plt.show()