You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

循环绘制Matplotlib图表时,如何正确设置标题?

循环绘图标题不显示的解决办法

你的代码有两个核心问题:一是plt.plot()写在了循环外面,导致只有最后一次的计算结果被绘制,前面循环创建的空figure自然看不到标题;二是你可能用错了标题设置的方法(比如fig.subtitle是拼写错误,正确是fig.suptitle)。

修正后的代码如下:

plotData.sort_values(by=['segment'])
for date in plotData.month_of_default.unique():
    # 创建figure并保存对象,方便设置全局标题
    fig = plt.figure()
    fig.suptitle(f"数据概览: 违约月份 {date}", fontsize=16)
    
    temp = plotData[plotData.month_of_default == date][['New_Amount_2','ID','segment','total','payment','month']]
    denom = temp.drop_duplicates(subset=['ID']).groupby('segment')['total'].sum()
    test = temp.groupby(['segment','month']).New_Amount_2.sum().groupby(level=0).cumsum()/denom
    
    # 把绘图语句移到循环内,每个日期对应一张图
    plt.plot(test.unstack().T)
    # 设置当前子图的标题,和全局标题区分开
    plt.title(f"累计金额趋势", fontsize=12)
    
    # 可选:如果是脚本运行,加这个会逐个弹出图表,避免重叠
    plt.show()

关键细节:

  • 绘图语句必须在循环内:每个date对应的test数据都要在循环里绘制,不然前面创建的figure都是空的,标题根本没地方显示。
  • 标题设置的正确语法:
    • 单图场景用plt.title()最直接,会给当前活跃的子图加标题。
    • 如果要加全局大标题,用fig.suptitle()(注意是suptitle不是subtitle)。
    • 也可以先获取坐标轴对象再设置:ax = plt.gca(),然后ax.set_title("你的标题"),这种方式更灵活,适合复杂绘图。
  • plt.show()的作用:在脚本里运行时,循环内加这个会让每个图表单独显示;如果是Jupyter Notebook,不加也能显示,但加了可以避免图表重叠。

内容的提问来源于stack exchange,提问作者user13948

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:36:24