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

matplotlib绘制多y值对应单x值数据出现锯齿折线怎么解决

问题原因

matplotlib的plot函数绘制折线时,会严格按照传入数据点的先后顺序依次连线,你当前的x列数值是乱序排列的,点的位置来回跳动,自然会出现折返的锯齿效果。仅单独对x值做排序会破坏x和y的对应关系,无法解决问题。

解决方法

先对整个DataFrame按照x列(第0列)排序,保留x和y的对应关系后再绘图即可,修正代码如下:

import pandas as pd
import matplotlib.pyplot as plt

data = {0: [0.9991008043, 0.7186818868, 0.5990678817, 0.000260249999, -0.0002838699947, 0.9982619435, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.5990678817, 0.9987124801, 0.9983241558, 0.9979358315, 0.9975475073],
        1: [0.141599882, -0.0239639965, -0.8235306015, -0.5624349256, 0.9576566094, 0.1070839175, -0.7615373918, -0.7436025052, -0.7207683284, -0.7181828611, -0.7169656166, -0.7189734963, -0.7248864019, -0.7334572909, -0.7431326927, -0.7535460886, -0.7653977208, -0.7772543193, -0.7850276183, -0.7882964598, -0.788996217, -0.7894645357, -0.7800111345, -0.7680467609, -0.7651210906, -0.7626205455, 0.1662477571, 0.1776703065, 0.178896989, 0.1792297328]}
df = pd.DataFrame(data)
# 按x列升序排序,保留x与y的对应关系
df_sorted = df.sort_values(by=df.columns[0])
plt.plot(df_sorted.iloc[:,0], df_sorted.iloc[:,1], marker="o", linewidth=2)
plt.show()

补充说明

如果存在单个x值对应多个y值的情况,排序后仍可能出现局部上下折返的折线,可根据实际需求选择优化方案:

  • 若需要展示整体趋势:可对x做分箱后取y的均值/中位数,或使用多项式拟合、LOESS局部回归等方法生成平滑曲线
  • 若需要展示所有数据点的分布:建议改用散点图plt.scatter绘制,更适配单x对应多y的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:54:08