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

Seaborn绘制分组累计和折线图异常:现有代码无法生成正确曲线

解决方法

你的问题出在使用 estimator="cumsum" 时,Seaborn 会对每个 idx 对应的所有分组的 value 计算累计和,而非在每个分组内部按 idx 递增计算累计和。要得到每个分组严格上升的累计和曲线,需先在 DataFrame 中预计算每个分组的累计值,再进行绘图。

步骤1:预计算分组累计和

按 hue_val 分组,对每个分组内的 value 计算累计和:

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

# 创建原始DataFrame
data = {
    'idx': [1,2,3,4,5,6,7,8,9,10]*3,
    'hue_val': ["A"]*10 + ["B"]*10 + ["C"]*10,
    'value': np.random.rand(30),
}
df = pd.DataFrame(data)

# 预计算每个分组的累计和
df['cumulative_value'] = df.groupby('hue_val')['value'].cumsum()

步骤2:绘制累计和折线图

使用预计算的 cumulative_value 列绘图:

# 绘制折线图
sns.lineplot(x="idx", y="cumulative_value", hue="hue_val", data=df, marker='o')

# 添加图表标签
plt.title('各分组随idx递增的value累计和')
plt.xlabel('idx')
plt.ylabel('累计value')
plt.show()

说明

  • groupby('hue_val')['value'].cumsum() 会对每个 hue_val 分组单独计算 value 的累计和,确保每个分组的曲线随 idx 严格上升(因为 np.random.rand() 生成的均为正数)。
  • 加入 marker='o' 可更清晰地看到每个 idx 对应的累计值点,为可选参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:55:19