如何在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
相关产品推荐
相关产品推荐

