Matplotlib fill_between如何在折线与非零水平阈值线间填充
问题原因
plt.fill_between() 未显式指定填充下边界时,默认以y=0(x轴位置)作为填充起始边界,因此现有写法会从x轴向上填充至曲线位置,无法限定在阈值线与曲线之间。
修正方法
调用时显式传入水平阈值作为填充下边界,将目标曲线作为填充上边界,即可实现指定区间的填充,修正代码如下:
threshold = 205 plt.fill_between( df.index, threshold, # 填充下边界:205对应的水平阈值线 df['Data'], # 填充上边界:目标数据曲线 where=(df['Data'] > threshold), # 仅在曲线值高于阈值时触发填充 color='orange' )
补充说明
- 可新增
alpha参数传入0~1之间的数值设置填充透明度,优化视觉效果 - 若需要填充曲线低于阈值的区域,仅需将
where条件改为df['Data'] < threshold,同时交换下边界和上边界的传值,避免填充方向颠倒 - 填充边界既支持传入固定数值生成水平参考线的填充效果,也支持传入与x轴长度匹配的序列,实现两条曲线之间的条件填充
内容的提问来源于stack exchange,提问作者ortunoa
相关产品推荐
相关产品推荐

