1 引言
各位朋友大家好,欢迎来到月来客栈,我是掌柜空字符。
大家可能经常在不同的地方看到类似如下所示的图像。
如图1所示,左边为常见曲线可视化,通过plt.plot()
方法即可绘制,而右边则是将两个曲线相交的部分进行了填充。类似的还有图2这样的形式。
从图2可以看出,其于与图1的差别之处就在于,在图1中
2 填充图
从上面的示例可以看出,最主要的目的是将曲线之间的区域填充起来。在matplotlib的plot
模块中我们可以借助fill_between
和fill_betweenx
这两个函数来分别完成上述两个示例的绘制。
2.1 fill_between
方法
根据函数名字也可以大致看出fill_between
的作用是在什么之间进行填充。对于fill_between
函数来说,其主要有6个比较重要的参数,如下:
1def fill_between(x, y1, y2=0,edgecolor=None, facecolor=None, alpha=None):
2 pass
在上述代码中,x
表示用来指定自变量y1
和y2
分别用来指定两条以edgecolor
表示用来指定填充部分边缘的颜色;facecolor
用来指定填充部分的颜色;alpha
用来指定填充部分的透明度。
例如对于图1中的示例来说,我们便可以通过以下代码来完成:
xxxxxxxxxx
121def plot2():
2 plt.figure(figsize=(8, 4))
3 x = np.linspace(-np.pi, np.pi, 300)
4 y1 = np.sin(x)
5 y2 = x
6 plt.subplot(1, 2, 1)
7 plt.plot(x, y1)
8 plt.plot(x, y2)
9 plt.subplot(1, 2, 2)
10 plt.fill_between(x, y1,y2, edgecolor='red', facecolor = 'blue',alpha=0.7)
11 plt.tight_layout()
12 plt.show()
在上述代码中,第3行是指定横坐标fill_between
来对两条曲线之间的区域进行填充。
2.2 fill_betweenx
方法
这个方法与上面 fill_between
方法的区别就在于它是在两条以fill_betweenx
函数来说,其主要有6个比较重要的参数,如下:
xxxxxxxxxx
21def fill_betweenx(y, x1, x2=0, edgecolor=None, facecolor=None, alpha=None):
2 pass
在上述代码中,y
用来指定自变量x1
和x2
分别用来指定两条以
进一步,通过如下代码便可以完成类似图像的绘制:
xxxxxxxxxx
121def plot3():
2 plt.figure(figsize=(8, 4))
3 y = np.linspace(-2 * np.pi, 0, 300)
4 x1 = 100*np.sin(y)
5 x2 = np.cos(2 * np.pi * y) * np.exp(-y)
6 plt.subplot(1, 2, 1)
7 plt.plot(x1, y, c='blue')
8 plt.plot(x2, y, c='red')
9 plt.subplot(1, 2, 2)
10 plt.fill_betweenx(y, x1, x2, edgecolor='black', alpha=0.7)
11 plt.tight_layout()
12 plt.show()
在上述代码中,第3行是定义自变量fill_betweenx
来对两条曲线之间的区域进行填充。绘制完成后的结果如图3所示。
而对于例如图2中的示例来说,可以通过以下代码来完成:
xxxxxxxxxx
141def plot4():
2 plt.figure(figsize=(8, 4))
3 t = np.linspace(0, np.pi, 1000)
4 y = np.cos(t) + np.power(np.sin(t), 2.0 / 3)
5 x1 = np.sin(t)
6 x2 = -np.sin(t)
7 plt.subplot(1, 2, 1)
8 plt.plot(x1, y)
9 plt.plot(x2, y)
10 plt.subplot(1, 2, 2)
11 plt.fill_betweenx(y, x1, x2,edgecolor='red',
12 facecolor='#ef8683', alpha=0.7)
13 plt.tight_layout()
14 plt.show()
在上述代码中,第3-4行是定义了自变量
到此,对于曲线之间的两种填充方法就介绍完毕了。
本次内容就到此结束,感谢您的阅读!如果你觉得上述内容对你有所帮助,欢迎点赞转发分享!若有任何疑问与建议,请添加掌柜微信nulls8(备注来源)进行交流。青山不改,绿水长流,我们月来客栈见!