前述已经学习了《python画图|竖向填充两条线之间的区域》,点击下方链接直达:
现在我们尝试更换填充方向,转向横向填充。
【1】官网教程
首先点击官网链接,直达教程:
https://matplotlib.org/stable/gallery/lines_bars_and_markers/fill_betweenx_demo.html
官网教程高度简介,对此做一下解读。
【2】代码解读
首先是引入计算模块numpy和画图模块matplotlib:
import matplotlib.pyplot as plt #引入matplotlib模块画图 import numpy as np #引入numpy模块做数学计算
然后定义了自变量和因变量:
y = np.arange(0.0, 2, 0.01) #定义自变量 x1 = np.sin(2 * np.pi * y) #定义因变量 x2 = 1.2 * np.sin(4 * np.pi * y) #定义因变量
再之后定义了要画图:
fig, [ax1, ax2, ax3] = plt.subplots(1, 3, sharey=True, figsize=(6, 6)) #定义画图
对于常规图形来说,下一步直接输出图形即可,但为了实现对不同曲线之间的填充,图形画出之前需要先设置如何填充。
横向填充和竖向填充的区别在于,横向填充调用fill_betweentx()函数:
ax1.fill_betweenx(y, 0, x1) #图像ax1填充x1和0之间的区域 #图像ax1填充x1和0之间的区域 ax1.set_title('between (x1, 0)') ax2.fill_betweenx(y, x1, 1) #图像ax2填充x1和1之间的区域 #图像ax2填充x1和1之间的区域 ax2.set_title('between (x1, 1)') ax2.set_xlabel('x') ax3.fill_betweenx(y, x1, x2) #图像ax3填充x1和x2之间的区域 #图像ax3填充x1和x2之间的区域 ax3.set_title('between (x1, x2)')
最后输出图形:
plt.show()
图1
【3】代码修改
首先增加一些剖面线标记,分别设置step的形式:
ax1.fill_betweenx(y, 0, x1,interpolate=True,step='pre',hatch='/') #图像ax1填充x1和0之间的区域 #图像ax1填充x1和0之间的区域 ax1.set_title('between (x1, 0)') ax2.fill_betweenx(y, x1, 1,step='post',hatch='+') #图像ax2填充x1和1之间的区域 #图像ax2填充x1和1之间的区域 ax2.set_title('between (x1, 1)') ax2.set_xlabel('x') ax3.fill_betweenx(y, x1, x2,step='mid',hatch='*') #图像ax3填充x1和x2之间的区域 #图像ax3填充x1和x2之间的区域 ax3.set_title('between (x1, x2)')
完整代码和输出结果为:
import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算
y = np.arange(0.0, 2, 0.01) #定义自变量
x1 = np.sin(2 * np.pi * y) #定义因变量
x2 = 1.2 * np.sin(4 * np.pi * y) #定义因变量
fig, [ax1, ax2, ax3] = plt.subplots(1, 3, sharey=True, figsize=(6, 6)) #定义画图
ax1.fill_betweenx(y, 0, x1,interpolate=True,step='pre',hatch='/') #图像ax1填充x1和0之间的区域 #图像ax1填充x1和0之间的区域
ax1.set_title('between (x1, 0)')
ax2.fill_betweenx(y, x1, 1,step='post',hatch='+') #图像ax2填充x1和1之间的区域 #图像ax2填充x1和1之间的区域
ax2.set_title('between (x1, 1)')
ax2.set_xlabel('x')
ax3.fill_betweenx(y, x1, x2,step='mid',hatch='*') #图像ax3填充x1和x2之间的区域 #图像ax3填充x1和x2之间的区域
ax3.set_title('between (x1, x2)')
plt.show()
图2
图2是参考竖向填充偶 教程里增加剖面线后的结果。
【4】代码进阶
继续增加where来控制画图范围:
ax1.fill_betweenx(y, 0, x1,where=abs(y-1)<0.8,interpolate=True,step='pre',hatch='/') #图像ax1填充x1和0之间的区域 #图像ax1填充x1和0之间的区域 ax1.set_title('between (x1, 0)') ax2.fill_betweenx(y, x1, 1,where=((y>0.5)),step='post',hatch='+') #图像ax2填充x1和1之间的区域 #图像ax2填充x1和1之间的区域
给ax1和ax2设置画图范围,得到的输出结果为:
import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算
y = np.arange(0.0, 2, 0.01) #定义自变量
x1 = np.sin(2 * np.pi * y) #定义因变量
x2 = 1.2 * np.sin(4 * np.pi * y) #定义因变量
fig, [ax1, ax2, ax3] = plt.subplots(1, 3, sharey=True, figsize=(6, 6)) #定义画图
ax1.fill_betweenx(y, 0, x1,where=abs(y-1)<0.8,interpolate=True,step='pre',hatch='/') #图像ax1填充x1和0之间的区域 #图像ax1填充x1和0之间的区域
ax1.set_title('between (x1, 0)')
ax2.fill_betweenx(y, x1, 1,where=((y>0.5)),step='post',hatch='+') #图像ax2填充x1和1之间的区域 #图像ax2填充x1和1之间的区域
ax2.set_title('between (x1, 1)')
ax2.set_xlabel('x')
ax3.fill_betweenx(y, x1, x2,step='mid',hatch='*') #图像ax3填充x1和x2之间的区域 #图像ax3填充x1和x2之间的区域
ax3.set_title('between (x1, x2)')
plt.show()
图3
由图3可见,左侧两个图只输出了局部。
【5】总结
学习了横向填充两条线之间的区域,绘制了剖面线,并对填充区域做了限定。
标签:ax2,ax3,两条线,填充,python,画图,np,x2,x1 From: https://blog.csdn.net/weixin_44855046/article/details/142454839