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

使用Matplotlib绘图时为何出现一个x对应多个y的现象?

问题原因及解决办法

你的图像出现异常的核心原因是x列表里的数值量级差异极大:前三个和最后一个x值都是10^-7量级(也就是0.0000003到0.0000005左右),但第四个x值是0.9999997,几乎等于1,和其他值差了近1000万倍。

Matplotlib的plt.plot()是严格按照你给的x、y列表的原始顺序依次连接点的,所以绘制时会先连前三个小x值的点,然后突然跳到x≈1的位置,再跳回x≈5e-7的位置,这就形成了图像里横跨整个x轴的两条竖线,看起来很奇怪。

解决办法

  • 按x值排序后再绘制:把x和y配对成元组,按x从小到大排序,再拆分回x、y列表,这样折线会按x的递增顺序连接,能正常展示趋势:
import matplotlib.pyplot as plt

x = [3.0589998800678586e-07, 3.575999869553925e-07, 4.17199998992146e-07, 0.9999997019767761, 5.364000230656529e-07]
y = [1509, 108, 99, 88, 85]

# 配对并按x排序
sorted_pairs = sorted(zip(x, y), key=lambda p: p[0])
sorted_x, sorted_y = zip(*sorted_pairs)

plt.plot(sorted_x, sorted_y)
plt.save("./frequency.png")  # 先保存再调用show,避免画布被清空
plt.show()

另外注意你的原代码有个小问题:plt.show()会弹出窗口并清空当前画布,之后再调用plt.save()会得到空白图,所以要先执行plt.save()再执行plt.show()。

  • 剔除异常值:如果那个x≈1的值是数据错误或者不需要的异常点,直接删掉对应的x和y值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:42:22