使用for循环绘制多幅ggplot图时设置不同标题的问题
解决循环绘图时标题重复的问题
核心思路
- 建立巡航编号与对应标题的映射字典,明确每个巡航对应的季节年份关联关系
- 循环迭代时,根据当前处理的巡航编号,从字典中取出对应标题赋值给图表
示例代码
假设你的数据按巡航编号分组,以下是可运行的修正示例:
import matplotlib.pyplot as plt import pandas as pd # 模拟你的数据结构 sample_data = pd.DataFrame({ 'cruise_num': [17, 17, 17, 44, 44, 44], 'x_data': [1, 2, 3, 1, 2, 3], 'y_data': [5, 7, 9, 6, 8, 10] }) # 关键:定义巡航编号到标题的映射 cruise_title_map = { 17: "Summer 2018", 44: "Summer 2019" # 后续新增巡航直接在此添加键值对即可 } # 按巡航编号分组批量绘图 for cruise_id, data_subset in sample_data.groupby('cruise_num'): plt.figure(figsize=(8, 6)) plt.plot(data_subset['x_data'], data_subset['y_data'], marker='s') # 从映射字典中获取当前巡航的专属标题 plt.title(cruise_title_map[cruise_id], fontsize=12) plt.xlabel('X轴名称') plt.ylabel('Y轴名称') plt.grid(alpha=0.3) plt.show()
常见问题排查
- 若标题仍重复,检查循环中是否正确获取了当前迭代的巡航编号,避免误用循环外的固定值
- 担心巡航编号不在字典中报错,可改用
get方法设置默认标题:plt.title(cruise_title_map.get(cruise_id, f"Cruise {cruise_id}")) - 确认所有绘图代码都在循环内部执行,避免仅创建一次图表后重复修改内容
内容的提问来源于stack exchange,提问作者FishyFishies
相关产品推荐
相关产品推荐

