You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用matplotlib填充两条函数曲线交点上方的指定区域

解决方案

直接调整fill_between的边界参数即可实现需求,修改后的代码如下:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.arange(0, 20, 0.01)  
f1 = x1 * 0 + 5/3
f3 = -0.25 * (-x1 + 7)

# 绘制基础曲线
plt.plot(x1, f1, 'm', linewidth = 3,  label='f1', alpha = 0.5)
plt.plot(x1, f3, 'y', linewidth = 3,  label='f3', alpha = 0.5)

# 填充两条曲线上方的区域
y_upper_limit = 10 # 可根据实际需要的y轴显示范围调整
# 下边界取两个函数在每个x点的最大y值,上边界设为y轴上限
plt.fill_between(x1, np.maximum(f1, f3), y_upper_limit, color='r', alpha=0.1, label='Area')

plt.ylim(0, y_upper_limit)
plt.legend()
plt.show()

实现逻辑

  • 用np.maximum(f1, f3)计算每个x坐标下两条曲线的最大y值,作为填充区域的下边界,天然对应了两条曲线交点两侧的更高值位置
  • 上边界设为你需要的y轴显示上限即可,即可得到所有位于两条曲线上方的区域
  • 如果仅需要填充交点附近的局部上方区域,可以额外添加where参数限制x范围,示例:
    # 先计算交点x坐标
    intersect_x = (5/3 + 7/4) / 0.25
    # 仅填充交点左右2个单位范围内的上方区域
    plt.fill_between(x1, np.maximum(f1, f3), y_upper_limit, where=(x1>intersect_x-2)&(x1<intersect_x+2), color='r', alpha=0.1, label='Area')
    

内容的提问来源于stack exchange,提问作者JumbleBuff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 03:06:03