如何用Matplotlib绘制Excel工作表中的多组数据集(含循环绘图)
解决方案:Excel多组x-y数据的Matplotlib绘图处理
一、先修正原代码的小问题
原代码存在两处细节错误:
skipwors拼写错误,应为skiprowsplt.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
相关产品推荐
相关产品推荐

