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

如何在Matplotlib中绘制Excel文件中的多数据集至同一图表?

多数据集合并到同一Matplotlib图表的解决方案

以下是修改后的代码,可将Excel中的多组数据绘制到同一图表中,并保留清晰的标识区分:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import openpyxl as xl

# 读取Excel数据
df = pd.read_excel("C:\\temp\\test.xlsx", sheet_name="Sheet2", skiprows=5)
print(df.columns)

# 按两两一组拆分列名(x,y对应)
def grouped(iterable, n):
    return zip(*[iter(iterable)]*n)

# 初始化单个图表和轴对象
fig, ax = plt.subplots(figsize=(10,5))
# 设置统一的坐标轴范围
ax.set_xlim(0.1, 15)
ax.set_ylim(300, 800)

# 循环绘制每组数据
for idx, (x_col, y_col) in enumerate(grouped(df.columns, 2), start=1):
    x = np.array(df[x_col].values)
    y = np.array(df[y_col].values)
    # 绘制曲线并添加标签,用于图例展示
    ax.plot(x, y, label=f"数据集 {idx}: {x_col} vs {y_col}")

# 设置图表标题和坐标轴标签
ax.set_title("多数据集合并图表")
ax.set_xlabel("X轴")
ax.set_ylabel("Y轴")
# 添加图例,区分不同数据集
ax.legend()

plt.show()

关键改动说明

  • 移除子图创建代码:删掉原代码中的plt.subplot(1,pair_count,pair),改用单个共享的ax对象完成所有绘图操作,避免生成多个子图。
  • 绑定绘图到指定轴:使用ax.plot()替代plt.plot(),确保所有曲线都绘制在同一个坐标轴上。
  • 添加图例标识:通过label参数为每条曲线命名,最后用ax.legend()展示图例,清晰区分不同数据集。
  • 统一配置图表元素:将坐标轴范围、标题、标签等配置移到循环外,避免重复设置,提升代码效率。

你之前操作出错的原因

你尝试添加fig, ax = plt.subplots()时,没有将后续的绘图操作绑定到这个ax对象上,仍然保留了原代码中创建子图的逻辑,导致每次循环都生成新的图表,最终出现多个独立窗口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 11:47:25