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

如何用Matplotlib填充x、y范围均不同的两条曲线间区域

问题:填充两条非对齐曲线之间的多边形区域

假设我有由以下数据定义的两条曲线:

x1 = [0,1,2,3]
y1 = [3,5,4,6]
x2 = [1.5,2.5,3.5,4.5]
y2 = [1,3,2,4]

通过以下代码可绘制其图像:

plt.figure(figsize=(10,10))
plt.plot(x1, y1)
plt.plot(x2, y2)
plt.show()

两条曲线的图像

我希望填充这两条曲线之间的区域,即连接两条曲线端点形成的多边形,但plt.fill_between和plt.fill_betweenx因二者x、y范围均不同无法使用,该如何操作?


解决方案

要实现这个效果,你可以把两条曲线的顶点按闭合多边形的顺序拼接,再用plt.fill()直接填充区域,具体步骤:

  • 保留第一条曲线的所有点(按原顺序)
  • 把第二条曲线的点逆序添加(这样才能形成闭合的多边形边界)
  • 将拼接后的x、y坐标传入plt.fill(),设置填充样式即可

示例代码:

import matplotlib.pyplot as plt

x1 = [0,1,2,3]
y1 = [3,5,4,6]
x2 = [1.5,2.5,3.5,4.5]
y2 = [1,3,2,4]

plt.figure(figsize=(10,10))
# 绘制原始两条曲线
plt.plot(x1, y1)
plt.plot(x2, y2)

# 拼接成闭合多边形的顶点坐标
poly_x = x1 + x2[::-1]
poly_y = y1 + y2[::-1]

# 填充多边形区域,设置颜色和透明度
plt.fill(poly_x, poly_y, color='lightblue', alpha=0.3)

plt.show()

原理说明:
逆序第二条曲线的点是关键——这样顶点会形成一个完整的闭合环:从第一条曲线的起点出发,沿第一条曲线走到终点,再沿第二条曲线反向回到起点,刚好构成填充需要的多边形边界。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 23:35:25