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

如何用Matplotlib绘制Excel工作表中的多组数据集(含循环绘图)

解决方案:Excel多组x-y数据的Matplotlib绘图处理

一、先修正原代码的小问题

原代码存在两处细节错误:

  • skipwors拼写错误,应为skiprows
  • plt.show需要加括号调用,即plt.show()

二、循环生成单独图表

利用列索引步长为2的循环,遍历每一组相邻的x-y列,为每组数据生成独立图表:

import matplotlib.pyplot as plt
import pandas as pd

# 读取Excel数据,路径前加r避免转义字符问题
df = pd.read_excel(r"C:\temp\test.xlsx", 'Sheet1', skiprows=5)

# 按步长2遍历列索引,每次取相邻两列作为一组x-y数据
for i in range(0, len(df.columns), 2):
    x_col_name = df.columns[i]
    y_col_name = df.columns[i+1]
    x_data = df[x_col_name]
    y_data = df[y_col_name]
    
    # 创建新的独立图表
    plt.figure()
    plt.xlim(0.1, 20)
    plt.ylim(100, 1000)
    plt.plot(x_data, y_data, marker='o')
    # 用列名作为图表标题和坐标轴标签
    plt.title(f"{x_col_name} - {y_col_name} 曲线")
    plt.xlabel(x_col_name)
    plt.ylabel(y_col_name)
    plt.grid(True)
    plt.show()

三、多组数据合并到同一图表

在同一个画布中循环绘制所有组数据,通过图例区分不同曲线:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_excel(r"C:\temp\test.xlsx", 'Sheet1', skiprows=5)

# 创建单个画布,设置尺寸
plt.figure(figsize=(10, 6))
plt.xlim(0.1, 20)
plt.ylim(100, 1000)

# 自定义颜色列表,用于区分不同组数据
color_list = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']

# 循环绘制所有组数据到同一画布
for i in range(0, len(df.columns), 2):
    x_col_name = df.columns[i]
    y_col_name = df.columns[i+1]
    x_data = df[x_col_name]
    y_data = df[y_col_name]
    # 用不同颜色和标签绘制曲线
    plt.plot(x_data, y_data, marker='o', color=color_list[i//2 % len(color_list)],
             label=f"{x_col_name} vs {y_col_name}")

# 设置整体图表属性
plt.title("所有组数据合并曲线")
plt.xlabel("距离")
plt.ylabel("HV值")
plt.legend(loc='upper right')
plt.grid(True)
plt.show()

四、额外提示

  • 如果Excel中存在列数为奇数的情况,循环时需添加判断(如if i+1 >= len(df.columns): break)避免索引越界
  • 可根据需求调整marker样式、线条类型(如linestyle='--')等绘图参数

内容的提问来源于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:15:10