mpl填充式绘图

填充式绘图类似于画图中的填充桶。mpl中主要有三个函数实现这一功能。

1.plt.fill()

作用:绘制多边形,并根据指定的颜色进行填充。

函数格式:fill(*args, data=None, **kwargs)

参数说明:

 *args : sequence of x, y, [color]

一系列x,y,[color]这样的组合。其中x是我们要绘制的多边形的各个顶点的横坐标,y是纵坐标。点的横纵坐标是顺序对应的。[color]是通用颜色参数。

点的连接也是严格按照指定的顺序的。

data:indexable object, optional

参数(x,y)若用参数代替而不是明确的数值,参数data负责填充数据。

ax.fill("x","y",
        data=dict(x=[1,1,3,3,5,5],
        y=[0,5,5,1,1,0]))
plt.show()

 

如果我不要填充的颜色,就要个边缘框呢?当然是老熟人plt.plot了!换个函数名,参数都不用改。

ax.plot("x","y",
        data=dict(x=[1,1,3,3,5,5],
        y=[0,5,5,1,1,0]))
plt.show()

 

 2.plt.fill_between()

作用:填充两条曲线中的区域。

曲线由点(x, y1)和(x, y2)定义。这将创建一个或多个描述填充区域的多边形。

默认情况下,这些边直接连接给定的点。

函数格式:fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, *, data=None, **kwargs)

参数说明:

x : array (length N)

定义曲线的节点的横坐标。

y1 : array (length N) or scalar

定义第一条曲线节点的纵坐标。

y2 : array (length N) or scalar, default: 0

 定义第二条曲线节点的纵坐标。

where : array of bool (length N), optional

填充条件。比如where=y1>y2,则只绘制y1>y2的部分。若为 None,则对数组 x 指定范围全部填充;若为布尔数组,则填充 True 部分。 

interpolate : bool, default: False

这个选项只有在*where*被使用且两条曲线交叉时才有意义。

默认情况下,定义填充区域的多边形节点将只放置在*x*数组中的位置。这样的多边形不能描述接近交集的上述语义。包含交集的x切面被简单地裁剪掉。

设置*interpolate*为*True*将计算实际的交点,并将填充区域扩展到这一点。

人话就是:更精确地计算交点并显示出来。

x=np.linspace(-5,5,1000)
y1=np.sin(x)
y2=np.cos(x)
plt.grid()
ax.set(axisbelow=True)
plt.fill_between(x,y1,y2,where=y1>y2,interpolate=True)
plt.show()

 3.fill_betweenx

这个函数就等于是把plt.fill_between()的横纵坐标颠倒过来。

 

 

posted @ 2021-09-01 16:57  zeroy610  阅读(151)  评论(0)    收藏  举报