如何绘制受两个水平边界约束的分段函数图像
分段函数受水平边界约束的绘图需求
我需要绘制一个受两条水平直线约束的分段线性函数图像,约束规则如下:
- 若图像处于两条边界之间且未跨越边界,按原函数绘制;
- 若图像与下边界相交,相交点之后的部分不再绘制;
- 若图像与上边界相交,仅当函数处于递增阶段时,图像沿上边界绘制,直到函数开始递减(注:仅函数递增时取上限值,而非函数值大于上限时)。
我已整理出期望效果的示意图:
以下是示例代码:
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
相关产品推荐
相关产品推荐

