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

如何基于pandas DataFrame绘制多指标折线图并修复多余折线问题

问题原因

你的代码核心错误是X轴数据赋值错误:
你定义percentile = df_uplift_percentile.values时,.values返回的是整个DataFrame所有数值组成的10行8列二维数组。调用plt.plot()时如果传入二维数组作为X参数,matplotlib会把每一列都当成独立的X序列和传入的Y值匹配绘图,最终就会生成大量非预期的折线。

修正方案

把X轴数据替换为DataFrame的索引(也就是你需要的percentile分段)即可,修正后代码如下:

import matplotlib.pyplot as plt

plt.figure(figsize=(20,15))
# 取索引作为X轴
x_percentile = df_uplift_percentile.index

response_rate_treatment = df_uplift_percentile["response_rate_treatment"].values
response_rate_control = df_uplift_percentile["response_rate_control"].values
uplift= df_uplift_percentile["uplift"].values

plt.plot(x_percentile, response_rate_treatment, label= "Treatment Response Rate", color = 'green' )
plt.plot(x_percentile, response_rate_control, label = "Control Response Rate", color = 'yellow' )
plt.plot(x_percentile, uplift, label = "Uplift", color = 'red' )

plt.legend()
plt.xlabel("Percentile")
plt.ylabel("Uplift = Treatment Response Rate- Control Response Rate")
plt.show()

如果想要更简洁的写法,也可以直接用pandas自带的绘图接口:

df_uplift_percentile[['response_rate_treatment','response_rate_control','uplift']].plot(
    figsize=(20,15),
    color=['green','yellow','red'],
    xlabel='Percentile',
    ylabel='Uplift = Treatment Response Rate- Control Response Rate'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:54:03