matplotlib之pyplot模块 您所在的位置:网站首页 origin如何填充指定的两条曲线 matplotlib之pyplot模块

matplotlib之pyplot模块

2023-11-18 18:31| 来源: 网络整理| 查看: 265

概述

fill_between和fill_betweenx函数的作用都是填充两条曲线之间的区域。其中

fill_between函数作用是填充两条水平曲线之间的区域。fill_betweenx函数作用是填充两条垂直曲线之间的区域。

两者参数非常相似,仅数据参数的名称、含义稍有不同。 fill_between函数的签名为:matplotlib.pyplot.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs) fill_betweenx函数的签名为:matplotlib.pyplot.fill_betweenx(y, x1, x2=0, where=None , interpolate=False,step=None,*, data=None, **kwargs)

fill_between函数

fill_between函数的签名为:matplotlib.pyplot.fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs)

参数说明如下:

x:定义两条曲线的节点的x坐标。长度为N的类数组结构。必备参数。y1:定义曲线的节点的y坐标。长度为N的类数组结构或者标量。必备参数。y2:定义第2条曲线的节点的y坐标。长度为N的类数组结构或者标量,默认值为0。可选参数。where:根据条件排除一些填充区域。长度为N的布尔数组。默认值为None。可选参数。interpolate:当该属性为True时将计算实际交点,并将填充区域延伸到此点。布尔值。默认值为False。注意:该属性只有使用了where属性且两条曲线相互交叉时才生效。step:拐点的计算方式。字符串,取值范围为{'pre', 'post', 'mid'}。默认值为None。可选参数。**kwargs:PolyCollection对象的相关属性。

fill_between函数的返回值为PolyCollection对象。

注意事项: 建议x,y1,y2使用数组结构,这样where参数的应用更加灵活。 两条曲线分别由(x,y1)和(x,y2)定义。两条曲线具有相同的x坐标。 两个曲线之间的填充区域可能有多个。 通过where参数可以排除一些填充区域。 默认直接连接给定点构成曲线。可以使用step函数改变连接点。

案例:演示fill_between的基本用法

在这里插入图片描述

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family']='simhei' plt.rcParams['axes.unicode_minus']=False # 构造x坐标 x = np.arange(0.0, 2, 0.01) # 构造y1曲线的y坐标 y1 = np.sin(2 * np.pi * x) # 构造y2曲线的y坐标 y2 = 0.8 * np.sin(4 * np.pi * x) fig, (ax1, ax2, ax3) = plt.subplots(3, 1, sharex=True, figsize=(6, 6)) # 参数y2 默认值为0 ax1.fill_between(x, y1) ax1.set_title('填充y1与0之间的区域') # 参数y2 的值为标量1 ax2.fill_between(x, y1, 1) ax2.set_title('填充y1与0之间的区域') ax3.fill_between(x, y1, y2) ax3.set_title('填充y1与y2之间的区域') ax3.set_xlabel('x') plt.show() 案例:置信带

在这里插入图片描述

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family']='simhei' plt.rcParams['axes.unicode_minus']=False x = np.linspace(0, 10, 11) y = [3.9, 4.4, 10.8, 10.3, 11.2, 13.1, 14.1, 9.9, 13.9, 15.1, 12.5] # 拟合曲线,并估计其y值及误差。 a, b = np.polyfit(x, y, deg=1) y_est = a * x + b y_err = x.std() * np.sqrt(1/len(x) + (x - x.mean())**2 / np.sum((x - x.mean())**2)) # 绘制拟合线 plt.plot(x, y_est, '-') # 填充置信带 plt.fill_between(x, y_est - y_err, y_est + y_err, alpha=0.2) # 绘制数据点 plt.plot(x, y, 'o', color='tab:brown') plt.show() 案例:演示interpolation参数

在这里插入图片描述

import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.family']='simhei' plt.rcParams['axes.unicode_minus']=False x = np.array([0, 1, 2, 3]) y1 = np.array([0.8, 0.8, 0.2, 0.2]) y2 = np.array([0, 0, 1, 1]) plt.subplot(211) plt.title('interpolation=False') # 绘制两条曲线 plt.plot(x, y1, 'o--') plt.plot(x, y2, 'o--') # 绘制曲线间填充 plt.fill_between(x, y1, y2, where=(y1 > y2), color='C0', alpha=0.3) plt.fill_between(x, y1, y2, where=(y1 y2), color='C0', alpha=0.3, interpolate=True) plt.fill_between(x, y1, y2, where=(y1 y1), facecolor='yellow', alpha=0.5) plt.fill_between(x, y1, y2, where=(y2


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有