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

如何使用matplotlib的fill_between填充线性规划最大外侧可行域

线性规划外侧可行域填充实现方案

实现思路:

  • 当前约束均为≥类型,可行域的y值下限为所有约束线对应y值的最大值,上限取y轴设置的最大值10即可
  • 调用matplotlib的fill_between方法填充下限到上限之间的区域即可得到目标效果

修改后的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.linspace(0, 10, 2000)
# 三个约束对应的y值
y1 = (-2 * x) + 6
y2 = 5 - x
y3 = (20 - 2 * x) / 10

# 绘制约束线
plt.plot(x, y1, label = r'$2x_1+x_2\geq6$')
plt.plot(x, y2, label = r'$x+y\geq5$')
plt.plot(x, y3, label = r'$2x+10y\geq20$')

# 计算可行域y的下限:所有约束线y值取最大,同时满足y≥0的边界要求
y_lower = np.maximum.reduce([y1, y2, y3, np.zeros_like(x)])
# 填充可行区域
plt.fill_between(x, y_lower, 10, where=(y_lower <= 10), color='#8ecae6', alpha=0.4)

plt.xlim((0, 10))
plt.ylim((0, 10))
plt.xlabel(r'$x$')
plt.ylabel(r'$y$')
plt.legend()
plt.show()

代码说明:

  • np.maximum.reduce可以批量计算每个x坐标下多个数组的最大值,加入np.zeros_like(x)是为了适配y≥0的边界约束,避免x值较小时约束线y为负导致填充出错
  • fill_between的where参数用于过滤下限超过上限的无效区间,避免绘图警告,color和alpha参数可自行调整填充的颜色和透明度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:09:03