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

如何绘制受两个水平边界约束的分段函数图像

分段函数受水平边界约束的绘图需求

我需要绘制一个受两条水平直线约束的分段线性函数图像,约束规则如下:

  • 若图像处于两条边界之间且未跨越边界,按原函数绘制;
  • 若图像与下边界相交,相交点之后的部分不再绘制;
  • 若图像与上边界相交,仅当函数处于递增阶段时,图像沿上边界绘制,直到函数开始递减(注:仅函数递增时取上限值,而非函数值大于上限时)。

我已整理出期望效果的示意图:
期望绘制效果示意图

以下是示例代码:

import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=(10, 5))
x = np.linspace(1, 22, num=1000)
y = np.zeros(1000)
mask1 = (1 <= x) & (x <= 3)
mask2 = (3 < x) & (x <= 5)
mask3 = (5 < x) & (x <= 6)
mask4 = (6 < x) & (x <= 8)
mask5 = (8 < x) & (x <= 10)
mask6 = (10 < x) & (x <= 11)
mask7 = (11 < x) & (x <= 13)
mask8 = (13 < x) & (x <= 15)
mask9 = (15 < x) & (x <= 20)
mask10 = (20 < x) & (x <= 22)
y[mask1] = 2.5 * x[mask1] - 0.5
y[mask2] = 17.5 - 3.5 * x[mask2]
y[mask3] = 2 * x[mask3] - 10
y[mask4] = x[mask4] - 4
y[mask5] = 5.5 * x[mask5] - 40
y[mask6] = 15
y[mask7] = -6.5 * x[mask7] + 173 / 2
y[mask8] = 2 * x[mask8] - 24
y[mask9] = -3 * x[mask9] + 51
y[mask10] = 5 * x[mask10] - 109
border = 5
border2 = -6
plt.plot(x, y)
plt.axhline(border, color='lightgreen')
plt.axhline(border2, color='lightgreen')
plt.plot(x, y, color="r")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:27:45