如何为每个x值提取对应最大y值以绘制函数型图像?
解决同一X值对应多个Y值时提取最大Y值绘图的问题
你当前代码的问题是用了全局列表d存储所有符合条件的Y值,导致每次取的是所有Y的最大值,而非当前X对应的Y的最大值。要解决这个问题,我们可以用字典按X值分组存储对应的Y值,让每个X拥有独立的Y列表,之后再提取每个组的最大值绘图。
修改后的示例代码
import matplotlib.pyplot as plt test_list=[(257.4, -6.0), (654.3, -3.0),(257.4, -9.0),(754.3, -0.0),(354.3, -11.0),(257.4, -5.0),(454.3, -10.0)] # 用字典存储每个x对应的y值列表 x_y_dict = {} for h, j in test_list: x_key = int(h) if x_key > 256: # 若x键不存在,初始化空列表 if x_key not in x_y_dict: x_y_dict[x_key] = [] # 将当前y值追加到对应x的列表中 x_y_dict[x_key].append(j) # 遍历字典,提取每个x对应的最大y值并绘图 for x_key, y_list in x_y_dict.items(): max_y = max(y_list) plt.plot(x_key, max_y, ".") print(f"x={x_key} 对应的最大y值: {max_y}") plt.show()
代码逻辑说明
- 分组存储Y值:通过字典
x_y_dict,以处理后的X值(int(h))为键,对应存储该X下所有符合条件的Y值列表,确保每个X的Y值独立维护。 - 筛选与收集:遍历原始点列表时,仅处理
int(h)>256的点,将Y值追加到对应X键的列表中。 - 提取最大值绘图:遍历字典的键值对,对每个X对应的Y列表取最大值,再执行绘图操作,保证每个X使用的是自身对应Y值的最大值。
内容的提问来源于stack exchange,提问作者user22785665
相关产品推荐
相关产品推荐

