首页编程开发Matplotlib【数据可视化(Matplo...

【数据可视化(Matplotlib篇)】13.填充区间

本系列文章配套代码获取有以下两种途径:

  • 通过百度网盘获取:
链接:https://pan.baidu.com/s/1jG-rGG4QMuZu0t0kEEl7SA?pwd=mnsj 提取码:mnsj
  • 前往GitHub获取
https://github.com/returu/Data_Visualization





Matplotlibfill()函数、fill_between()函数均可用于绘制填充区间。fill()函数通过传递的多边形端点坐标来设定填充区间,fill_between()函数通过传递的两条曲线来设定填充区间。
01
fill()函数

fill()函数用于绘制填充多边形,语法如下:
plt.fill(*args, data=None, **kwargs)
  • *args参数

*args参数是一个x, y, [color]序列,x, y代表一个多边形端点的x轴坐标和y轴坐标的列表颜色说明符为可选内容可以通过提供多个x、y、 [color] 序列来绘制多个多边形。
例如,以下实例都是符合要求的:
  • plt.fill(x,y):用默认颜色填充多边形;
  • plt.fill(x, y, ‘g ‘)用绿色填充多边形;
  • plt.fill(x1, y1,x2,y2)填充两个多边形;
  • plt.fill(x1, yl, ‘g’,x2,y2, ‘r ‘)一个用绿色填充,一个用红色填充。
  • data参数:
如果使用data参数,可以用下列方式:
plt.fill ( 'labelname1' , 'labelname2'data = { 'labelname1' : [坐标列表], 'labelname2' : [坐标列表] })
例如:
ax.fill("time""signal",
        data={"time": [012], "signal": [010]})
  • **kwargs参数:
其他常用的**kwargs参数如下:
  • color颜色。
  • edgecolor边界颜色。
  • facecolor区间内部颜色;
  • fill:是否填充多边形,取值为布尔值;
  • linestyle线条样式。
  • linewidth线条宽度。
  • zorder当绘制多条线时,zorder值较小的先绘制。
  • 实例:

  • 传递两个多边形端点坐标列表,并根据样式参数进行填充:
x = np.linspace(0 , 2*np.pi , 200)
y = np.sin(x)

plt.plot(x,y,'k')

# 填充区间
plt.fill([0,np.pi/2,np.pi],
         [0 , 1,0],
         'm',
         [np.pi,3*np.pi/2,2*np.pi],
         [0 , -1,0],
         'c',
         # 以下样式设置为两个填充多边形共享
         # facecolor参数会覆盖掉之前设置的color参数
         edgecolor='b',
         linestyle='-.',
         linewidth=4,
         facecolor='r',
         fill=True,
         alpha=0.3)

plt.show()
可视化效果如下图所示:

  • 通过data参数给定需要填充的多边形的端点信息:

x = np.linspace(0 , 2*np.pi , 200)
y = np.sin(x)

plt.plot(x,y)

# 填充区间
plt.fill('xaxis','yaxis','y',data={'xaxis':[0,np.pi/2,np.pi],'yaxis':[0 , 1,0]})


plt.show()
可视化效果如下图所示:

02
fill_between()函数

fill_between()函数与fill()数类似,不过该函数是通过传递的两条曲线来设定填充区间,其语法如下:
plt.fill_between(x, y1, y2, where=None,**kwargs)
其中:
x:x轴区间范围;
y1定义第一条曲线节点的y坐标;
y2定义第二条曲线节点的y坐标;
where定义从填充中排除某些垂直区域的区间;
interpolate接受布尔值,只有在使用了where参数同时两条曲线交叉时才有效。默认情况下,被填充的区域将被放在x阵列的位置,定义一个被填充的多边形区域。与x相交的部分被裁剪。
step如果填充需要一个步骤函数,则使用该参数。接受’pre’、’post’、’mid’三个值,用于指定步骤将发生的位置。pre代表区间(x[i-1],x[i])的值为y[i],x值向左移动;post代表区间(x[i],x[i+1])的值为y[i],x值向右移动;mid代表步骤发生在x位置的中间。
其他常用的**kwargs参数如下:
  • color颜色;
  • cmap:色彩映射的颜色地图;
  • edgecolor边界颜色;
  • facecolor区间内部颜色;
  • linestyle线条样式。
  • linewidth线条宽度。
  • zorder当绘制多条线时,zorder值较小的先绘制。
  • 实例:

  • 传递y1、y2两条曲线,并根据样式参数进行填充:
x = np.linspace(0 , 2*np.pi , 200)
y = np.sin(x)

plt.plot(x,y,'k')

plt.fill_between(x=x,
                 y1=-1# 第一条曲线为 y=-1 的直线
                 y2=y, # 第一条曲线为 y=sin(x)
                 color='c',
                 alpha=0.3,
                 edgecolor='b',
                 facecolor="m",
                 linestyle='--',
                 linewidth=5
                )

plt.show()
可视化效果如下图所示:

  • 通过where参数来排除一些填充区间:

x = np.linspace(0 , 2*np.pi , 200)
y = np.sin(x)

plt.plot(x,y,'k')

plt.fill_between(x=x,
                 y1=-1, # 第一条曲线为 y=-1 的直线
                 y2=y, # 第一条曲线为 y=sin(x)
                 where=(x>=2)&(x<=5), # 只填充x取值在[2,5]的范围
                 color='c',
                 alpha=0.3,
                 edgecolor='b',
                 facecolor="m",
                 linestyle='--',
                 linewidth=5
                )

plt.show()
可视化效果如下图所示:

03
fill_betweenx()函数

fill_betweenx()函数用于填充两条竖曲线之间的区域,语法如下:
plt.fill_betweenx(y, x1, x2=0, where=None, step=None, interpolate=False, *, data=None, **kwargs)
参数与fill_between()函数类似,就不做过多介绍了。
两点(x1,y)(x2,y)定义了曲线。这将创建一个或多个描述填充区域的多边形。where参数可用于选择性填充某些区域。默认情况下,边直接连接给定点。
y = np.arange(0.020.01)
x1 = np.sin(2 * np.pi * y)
x2 = 1.2 * np.sin(4 * np.pi * y)

plt.plot(x1,y,'k-',x2,y,'k--')

plt.fill_betweenx(y, x2, x1,
                  facecolor='r',
                  alpha=0.3
                  )

plt.show()
可视化效果如下图所示:


更多内容可以前往官网查看

https://matplotlib.org/stable/


本篇文章来源于微信公众号: 码农设计师

RELATED ARTICLES

欢迎留下您的宝贵建议

Please enter your comment!
Please enter your name here

- Advertisment -

Most Popular

Recent Comments