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

如何撤销plt.gcf().subplots_adjust设置 绘制多图时恢复默认布局

问题根因

plt.clf() 仅会清空当前画布内的绘图内容,不会重置画布本身的布局配置,你全程复用的是脚本初始化时生成的同一个全局画布实例,因此第一次设置的bottom=0.5参数会一直生效。你之前尝试的sns.set()仅重置seaborn绘图样式,不涉及matplotlib画布布局配置;重新导入plt也不会清除已经创建的全局画布实例,因此都无法解决问题。

可行解决方案
  • 方案1:每个绘图任务创建独立画布(最简单,完全隔离参数)
    每次绘图前显式调用plt.figure()创建新画布,或者绘图保存后调用plt.close()关闭当前画布,后续绘图会自动生成带默认配置的新画布。
    修改后代码示例:

    import seaborn as sns
    import matplotlib.pyplot as plt
    import numpy as np
    
    def box_adj():
        plt.figure() # 新建独立画布
        tips = sns.load_dataset("tips")
        ax = sns.boxplot(x="day", y="total_bill", hue="smoker",
                     data=tips, palette="Set3")
        plt.gcf().subplots_adjust(bottom=0.5)
        plt.savefig('box.png')
        plt.close() # 关闭当前画布,避免复用
    
    def dist():
        plt.figure() # 新建独立画布,默认布局配置
        ax = sns.distplot(np.random.randn(1000), kde=False)
        plt.savefig('dist.png')
        plt.close()
    
    if __name__ == "__main__":
        box_adj()
        dist()
    
  • 方案2:复用画布时手动重置布局参数
    如果不想频繁新建画布,可以在绘制第二张图前将布局参数恢复为matplotlib默认值:

    def dist():
        # 重置画布边距为默认值
        plt.gcf().subplots_adjust(bottom=0.11, left=0.125, right=0.9, top=0.88, wspace=0.2, hspace=0.2)
        ax = sns.distplot(np.random.randn(1000), kde=False)
        plt.savefig('dist.png')
        plt.clf()
    
  • 方案3:使用面向对象API管理绘图(更规范,适合复杂场景)
    显式创建画布和轴对象,所有配置直接绑定到当前画布,完全避免全局状态污染:

    def box_adj():
        fig, ax = plt.subplots()
        tips = sns.load_dataset("tips")
        sns.boxplot(x="day", y="total_bill", hue="smoker",
                     data=tips, palette="Set3", ax=ax)
        fig.subplots_adjust(bottom=0.5)
        fig.savefig('box.png')
        plt.close(fig)
    
    def dist():
        fig, ax = plt.subplots() # 新画布自带默认布局
        sns.distplot(np.random.randn(1000), kde=False, ax=ax)
        fig.savefig('dist.png')
        plt.close(fig)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:39:03