matplotlib 绘制多个子图,多条曲线

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()
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值