以前画图只会plt.plot然后plt.show,但是在面对要多个图和画子图的时候,前后的数据错位总是很头疼,分享这种比较常用的画图方法。
import numpy as np
import matplotlib.pyplot as plt
x = np.array(range(10))
y = x+1
fig1 = plt.figure(1) #画第一张图 figure里面的数字是标记数字,原则上任意
ax = fig1.add_subplot(111)
for i in range(3):
ax.plot(x, y+i, label = 'time'+str(i))
ax.axhline(y = 3, color = 'r') #画一条水平的线如果是垂直线用axvline(x = 3)
plt.legend() #只要你在polt那里加了label,就可以用legend把每条线给标识出来
fig2 = plt.figure(2) #画第二张图
ax1 = fig2.add_subplot(311) #定义每个子图的范围,意思是画一个3行1列的子图
ax1.plot(x, y)
ax2 = fig2.add_subplot(312)
ax2.plot(x, y)
ax3 = fig2.add_subplot(313)
ax3.plot(x, y)
plt.show() #最后plt.show就可以显示所有的figure
plt.close #最后最好关闭一下figure对象,不然可能跟后面的产生冲突
以下分别是figure1和figure2的结果图
tip:本代码粘贴复制过去既可以直接运行