DataFrame按Event列唯一值循环绘图异常问题求助
按DataFrame唯一Event值分别绘制对应图表的修正方案
你的代码能生成对应数量的图表且标题正确,但所有图表都显示了全量数据,核心原因是循环中未根据当前Event值过滤数据集,直接使用了原DataFrame的全部Date和Value列绘图。
修正后的代码
import pandas as pd import matplotlib.pyplot as plt df = pd.DataFrame() df['Date']=['2023-07-01', '2023-07-02','2023-07-03','2023-07-04','2023-07-05','2023-07-01', '2023-07-02','2023-07-03','2023-07-04','2023-07-05'] df['Event']=['abc','def','abc','def','abc','def','abc','def','abc','def'] df['Value']=[43,12,19,45,34,21,21,45,38,14] eve = df['Event'].unique() for q in eve: # 关键:过滤出当前Event对应的子数据集 filtered_df = df[df['Event'] == q] plt.figure(figsize=(10,6)) # 使用过滤后的数据集绘图 plt.plot(filtered_df['Date'], filtered_df['Value'], marker='o', linestyle='-', label=f'Value ({q})') plt.xticks(rotation=90) plt.title(q, fontsize=18) plt.legend() # 显示图例,提升可读性 plt.show() plt.close()
核心改动说明
- 每次循环中新增
filtered_df = df[df['Event'] == q],筛选出当前Event对应的所有行数据 - 绘图时替换为
filtered_df的Date和Value列,确保只绘制当前Event的数值 - 额外添加图例并标注对应Event,让图表信息更清晰
内容的提问来源于stack exchange,提问作者mainburnerone
相关产品推荐
相关产品推荐

