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

如何使用numpy和matplotlib绘制两个不同x数组对应曲线的最小值

解决方案

要实现不同x坐标序列的两条曲线取最小值段绘制,核心思路是将两条曲线统一插值到公共x网格上,再做数值比较筛选,该方案不依赖原始函数信息,完全适配数据集场景。

完整实现代码

import numpy as np
import matplotlib.pyplot as plt

# 原始数据(可替换为你的实测数据集)
x1 = np.linspace(-2,2,100)
x2 = np.linspace(0,4,100)
y1 = x1**2+1
y2 = (x2-1.5)**2

# (可选)如果原始x数组非单调,先执行排序操作
# sort_idx1 = np.argsort(x1)
# x1, y1 = x1[sort_idx1], y1[sort_idx1]
# sort_idx2 = np.argsort(x2)
# x2, y2 = x2[sort_idx2], y2[sort_idx2]

# 步骤1:确定两组x的公共取值范围
x_min = max(x1.min(), x2.min())
x_max = min(x1.max(), x2.max())
# 生成高分辨率统一x网格,点数可按需调整,越高曲线越平滑
x_uniform = np.linspace(x_min, x_max, 1000)

# 步骤2:将两条曲线插值到统一x网格上
y1_interp = np.interp(x_uniform, x1, y1)
y2_interp = np.interp(x_uniform, x2, y2)

# 步骤3:掩码筛选各自的最小值段并绘图
mask_y1 = y1_interp < y2_interp
plt.plot(x_uniform[mask_y1], y1_interp[mask_y1], c='#1f77b4', label='y1最小值段')

mask_y2 = y2_interp < y1_interp
plt.plot(x_uniform[mask_y2], y2_interp[mask_y2], c='#ff7f0e', label='y2最小值段')

plt.legend()
plt.show()

方案特性

  • 通用性强:无需知晓y1、y2的生成函数,仅需两组对应的x、y数组即可使用
  • 效率高:所有操作为numpy向量化运算,即使是万级以上的数据点也可快速处理
  • 可扩展:支持任意多条曲线的最小值段筛选,只需将所有曲线插值到同一公共x网格后逐点取最小值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:08