Pandas如何实现单X列与所有Y列数据同图绘制
Pandas 单X轴批量绘制多Y列图表方法
用Pandas原生DataFrame绘图接口即可实现单X列对应所有Y列的同图绘制,无需逐列循环,适配30+列的批量绘制场景。
- 前置依赖安装
执行命令安装所需库:pip install pandas openpyxl matplotlib - 完整实现代码
import pandas as pd import matplotlib.pyplot as plt # 读取目标Excel工作表,替换为实际文件路径、工作表名 df = pd.read_excel("你的数据文件.xlsx", sheet_name="目标工作表名称") # 批量绘图:指定公共X列,其余数值列自动作为Y系列绘制 ax = df.plot( x="X列实际列名", # 替换为表中X列的列名,例如"采样时间""序号" figsize=(14, 7), grid=True, colormap="tab20", # 高区分度多色系色卡,适配30条线的颜色区分 linewidth=1.2, alpha=0.8 # 调整线条透明度,减少多线重叠的辨识度问题 ) # 基础样式配置 ax.set_xlabel("X轴名称") ax.set_ylabel("Y轴数值") ax.set_title("多列数据同X轴对比图") # 多系列图例放在图表外侧,避免遮挡数据 plt.legend(bbox_to_anchor=(1.02, 1), loc="upper left", borderaxespad=0) plt.tight_layout() # 自动适配布局,防止标签、图例截断 # 展示或保存图表 plt.show() # plt.savefig("输出图表.png", dpi=300, bbox_inches="tight")
若表中存在不需要绘制的非X列,无需手动枚举全部30个Y列名,只需在绘图前筛选子集即可:执行
df = df[["X列名"] + 待绘制Y列名列表]后再调用plot方法。
- 实用优化技巧
- X列为时间格式时Pandas会自动识别并格式化时间刻度,无需额外处理
- 若默认色卡区分度不足,可替换
colormap参数为tab20b/viridis等其他Matplotlib内置色卡 - 数据存在空值时Pandas会自动跳过空点连线,无需提前做填充处理
内容的提问来源于stack exchange,提问作者ecar
相关产品推荐
相关产品推荐

