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

如何用Pandas plot()分组将多条曲线绘制在同一图表中

如何将Pandas分组绘制的多条曲线合并到同一图表中?

问题场景

现有包含3组店铺销售数据的CSV文件,每组数据对应一条待绘制的曲线。使用Pandas的plot()方法按shop字段分组绘图时,生成了3个独立图表,需要将3条曲线展示在同一个图表中。

原始CSV数据

shop,timestamp,sales
north,2023-01-01,235
north,2023-01-02,147
north,2023-01-03,387
north,2023-01-04,367
north,2023-01-05,197
south,2023-01-01,235
south,2023-01-02,98
south,2023-01-03,435
south,2023-01-04,246
south,2023-01-05,273
east,2023-01-01,197
east,2023-01-02,389
east,2023-01-03,87
east,2023-01-04,179
east,2023-01-05,298

原测试代码(生成独立图表)

import pandas as pd

csv = pd.read_csv('./tmp/sample.csv')
csv.timestamp = pd.to_datetime(csv.timestamp)

# 此代码会生成3个独立图表
csv.plot(x='timestamp', by='shop')

解决方案

方法1:数据透视后直接绘图

通过pivot()将数据重构为宽表格式,让不同店铺的销售数据对应同一时间戳的列,再调用plot()即可自动将所有曲线绘制在同一图表。

import pandas as pd

csv = pd.read_csv('./tmp/sample.csv')
csv.timestamp = pd.to_datetime(csv.timestamp)

# 透视重构数据:timestamp为索引,shop为列,sales为值
pivoted_df = csv.pivot(index='timestamp', columns='shop', values='sales')
# 绘制合并曲线,自动生成图例
pivoted_df.plot()

方法2:手动指定绘图轴

创建matplotlib轴对象,循环遍历分组数据,将每条曲线绘制到同一轴上。

import pandas as pd
import matplotlib.pyplot as plt

csv = pd.read_csv('./tmp/sample.csv')
csv.timestamp = pd.to_datetime(csv.timestamp)

# 创建单个图表轴对象
fig, ax = plt.subplots()

# 按shop分组,逐个绘制曲线到同一轴
for shop_name, group_data in csv.groupby('shop'):
    group_data.plot(x='timestamp', y='sales', ax=ax, label=shop_name)

# 显示图表
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:55:16