
本文介绍如何自动将 pandas dataframe 的列名(如 "john"、"ana")作为 matplotlib 图表标题,适用于多列数据的批量绘图场景,避免硬编码,提升代码复用性与可维护性。
本文介绍如何自动将 pandas dataframe 的列名(如 "john"、"ana")作为 matplotlib 图表标题,适用于多列数据的批量绘图场景,避免硬编码,提升代码复用性与可维护性。
在数据分析可视化中,常需为每列数值数据单独绘制折线图,并以对应列名为标题。手动为每列写 plt.title("Name of graph: John") 显然不可行——尤其当 DataFrame 包含 20+ 列时。幸运的是,Pandas 的 df.columns 属性可直接访问列名列表,结合 Python 循环即可实现完全自动化。
以下是一个健壮、可扩展的实现方案:
import pandas as pd
import matplotlib.pyplot as plt
begin_date = '2019-01-01'
df = pd.DataFrame({
"date": pd.date_range(begin_date, periods=5),
"John": [42, 40, 47, 49, 51],
"Ana": [50, 43, 41, 46, 47],
"Goku": [55, 58, 62, 64, 69]
})
# 遍历除 'date' 外的所有数据列(跳过时间索引列)
for col in df.columns:
if col == "date": # 假设 'date' 是横轴,不作为被绘数据列
continue
plt.figure(figsize=(6, 4))
plt.plot(df["date"], df[col], marker='o', linewidth=2, markersize=6)
plt.title(f"Name of graph: {col}", fontsize=14, fontweight='bold')
plt.xlabel("Date")
plt.ylabel("Value")
plt.grid(True, alpha=0.3)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()✅ 关键要点说明:
- 使用
df.columns获取全部列名,通过条件判断(如if col != "date")灵活排除非数值列; - 标题字符串采用 f-string 格式化(
f"Name of graph: {col}"),简洁安全; - 每次循环调用
plt.figure()确保生成独立图表窗口,避免图形叠加; - 添加
plt.tight_layout()和plt.xticks(rotation=45)提升日期类横轴的可读性。
⚠️ 注意事项:
- 若列名含空格或特殊字符,建议提前清洗(如
col.replace(' ', '_')),或在标题中做转义处理; - 批量绘图时内存占用可能上升,如需保存而非显示,可用
plt.savefig(f"{col}_plot.png")替代plt.show(); - 更推荐使用面向对象接口(
fig, ax = plt.subplots())替代plt.全局函数,便于后续复杂定制(如子图、多系列叠加等)。
通过该方法,你只需一次编写逻辑,即可为任意规模的多列时间序列数据自动生成带语义标题的专业图表——真正实现“写一次,绘百列”。

















