【可视化】使用matplotlib进行区域填充
效果图
matplotlib.pyplot.fill_between
函数:
matplotlib.pyplot.
fill_between
(x, y1, y2=0, where=None, interpolate=False, step=None, hold=None, data=None, **kwargs)
效果:
在两条水平曲线之间填充区域。
曲线由点(x,y1)和(x,y2)定义。这将创建一个或多个描述填充区域的多边形。
您可以使用where来排除某些水平部分。
默认情况下,边直接连接给定点。如果填充应该是阶梯函数,即在x之间保持不变,请使用步骤。
参数:
参数: |
x : array (length N) The x coordinates of the nodes defining the curves. 定义曲线的节点的x坐标
y1 : array (length N) or scalar The y coordinates of the nodes defining the first curve.
y2 : array (length N) or scalar, optional, default: 0 The y coordinates of the nodes defining the second curve. 定义第二条曲线的节点的y坐标
where : array of bool (length N), optional, default: None Define where to exclude some horizontal regions from being filled. The filled regions are defined by the coordinates 定义其中从充满排除某些水平区域。填充区域由坐标定义
interpolate : bool, optional This option is only relvant if where is used and the two curves are crossing each other. Semantically, where is often used for y1 > y2 or similar. By default, the nodes of the polygon defining the filled region will only be placed at the positions in the x array. Such a polygon cannot describe the above semantics close to the intersection. The x-sections containing the intersecion are simply clipped. Setting interpolate to True will calculate the actual interscection point and extend the filled region up to this point. 如果使用where并且两条曲线相互交叉,则此选项仅为relvant 。 语义上,在那里经常用于Y1 > Y2或相似。默认情况下,定义填充区域的多边形节点将仅放置在x数组中的位置。这样的多边形无法描述靠近交叉点的上述语义。包含交叉点的x部分被简单地修剪。 将interpolate设置为True将计算实际的截距点并将填充区域扩展到此点。
step : {'pre', 'post', 'mid'}, optional Define step if the filling should be a step function, i.e. constant in between x. The value determines where the step will occur:如果填充应该是阶梯函数,即在x之间保持不变,则定义步骤。该值确定步骤的发生位置:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Returns: |
`.PolyCollection` A |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
其他参数: |
**kwargs All other keyword arguments are passed on to 所有其他关键字参数都传递给
|
代码
# Import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
import seaborn as sns
import matplotlib
matplotlib.rcParams['axes.unicode_minus']=False
# 生产绘图数据
price = pd.Series(np.random.randn(150).cumsum(),
index=pd.date_range('2000-1-1', periods=150, freq='B'))
# mean
ma = price.rolling(20).mean()
# std
mstd = price.rolling(20).std()
plt.figure()
plt.plot(price.index, price, 'k')
plt.plot(ma.index, ma, 'b')
plt.fill_between(mstd.index, ma-2*mstd, ma+2*mstd, color='b', alpha=0.2)
详情参考:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.fill_between.html?highlight=fill_between