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

Python中在同一图表绘制多条曲线并添加图例的实现方法

同一图表绘制多组同键字典数据的带标签曲线

问题背景

已有代码可将单个字典绘制成散点图:

df = pd.Series(data1, name='y').rename_axis('x').reset_index()
df.plot(kind='scatter', x='x', y='y')

现有多组键相同、值不同的字典数据,需在同一图表中绘制对应曲线并添加标签:

data1 = {'2022-01-30': 50, '2022-01-31': 152, '2022-02-01': 41 }
data2 = {'2022-01-30': 124, '2022-01-31': 142, '2022-02-01': 745 }
data3 = {'2022-01-30': 4, '2022-01-31': 1, '2022-02-01': 7 }

解决方案

根据需求选择折线图(带数据点)或散点图的实现方式:

方式1:绘制折线图(推荐,适合展示趋势)

将多组字典合并为DataFrame,直接调用plot方法即可自动生成带标签的多条曲线:

import pandas as pd
import matplotlib.pyplot as plt

# 定义多组数据
data1 = {'2022-01-30': 50, '2022-01-31': 152, '2022-02-01': 41 }
data2 = {'2022-01-30': 124, '2022-01-31': 142, '2022-02-01': 745 }
data3 = {'2022-01-30': 4, '2022-01-31': 1, '2022-02-01': 7 }

# 合并为DataFrame,日期为索引,每组数据对应一列
df = pd.DataFrame({
    '数据集1': data1,
    '数据集2': data2,
    '数据集3': data3
})

# 绘制折线图,marker='o'显示数据点
df.plot(kind='line', marker='o', figsize=(10, 6))

# 补充图表信息
plt.title('多组日期数据趋势对比')
plt.xlabel('日期')
plt.ylabel('数值')
plt.legend()  # 显示标签图例
plt.show()

方式2:绘制散点图

由于df.plot(kind='scatter')仅支持一组x/y,需循环遍历每组数据绘制:

import pandas as pd
import matplotlib.pyplot as plt

data1 = {'2022-01-30': 50, '2022-01-31': 152, '2022-02-01': 41 }
data2 = {'2022-01-30': 124, '2022-01-31': 142, '2022-02-01': 745 }
data3 = {'2022-01-30': 4, '2022-01-31': 1, '2022-02-01': 7 }

df = pd.DataFrame({
    '数据集1': data1,
    '数据集2': data2,
    '数据集3': data3
})

# 创建画布
plt.figure(figsize=(10, 6))

# 循环绘制每组散点并指定标签
for column_name in df.columns:
    plt.scatter(df.index, df[column_name], label=column_name)

# 补充图表信息
plt.title('多组日期数据散点对比')
plt.xlabel('日期')
plt.ylabel('数值')
plt.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:05:02