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

在单张图中绘制多数据集:不同颜色区分问题求助

解决方案

方法1:循环读取文件并逐个绘图

直接遍历所有Excel文件,对每个文件单独筛选数据后绘图,matplotlib会自动为每条曲线分配不同颜色,无需手动设置。

import pandas as pd
import matplotlib.pyplot as plt
from glob import glob

# 获取目标目录下所有Excel文件路径(按需修改路径)
excel_paths = glob("./data/*.xlsx")

plt.figure(figsize=(10, 6))

for path in excel_paths:
    # 读取单文件数据
    df = pd.read_excel(path)
    # 筛选Measurement=2的前5行X、Y数据
    filtered_data = df[df["Measurement"] == 2].head(5)
    # 绘图,用文件名作为图例标识
    plt.plot(filtered_data["X"], filtered_data["Y"], label=path.split("/")[-1].split(".")[0])

# 配置图元素
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Multiple Datasets in Single Plot")
# 把图例放在图外避免遮挡
plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left")
plt.tight_layout()
plt.show()

方法2:添加数据集标识后分组绘图

如果需要保留合并后的数据集用于后续分析,可以给每个数据集添加标识列,再用Seaborn自动分组绘图,适合批量处理大量文件的场景。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from glob import glob

excel_paths = glob("./data/*.xlsx")
all_datasets = []

for path in excel_paths:
    df = pd.read_excel(path)
    filtered_data = df[df["Measurement"] == 2].head(5)
    # 添加数据集标识列(用文件名区分)
    filtered_data["Dataset"] = path.split("/")[-1].split(".")[0]
    all_datasets.append(filtered_data)

# 合并所有数据集
combined_df = pd.concat(all_datasets, ignore_index=True)

plt.figure(figsize=(10, 6))
# 用hue参数按Dataset分组,自动分配不同颜色
sns.lineplot(data=combined_df, x="X", y="Y", hue="Dataset", marker="o")

plt.xlabel("X")
plt.ylabel("Y")
plt.title("Multiple Datasets with Seaborn")
plt.legend(bbox_to_anchor=(1.05, 1), loc="upper left")
plt.tight_layout()
plt.show()

问题根源说明

你之前用pd.concat直接合并所有数据但未添加数据集标识列,导致绘图工具无法区分不同来源的数据,只能视为一组绘制。上述两种方法都无需手动处理每个数据集,能自动适配50个文件的批量需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:40:58