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

如何通过循环生成多个seaborn countplot图表并解决绘图重叠问题

问题原因

绘图重叠是因为matplotlib/seaborn默认复用当前活跃的画布对象,循环过程中没有新建独立画布,多次绘图的内容都叠加到了同一张画布上。

解决方法

每次循环时创建独立画布,保存后关闭画布释放资源即可,修改后代码如下:

import matplotlib.pyplot as plt
import seaborn as sns

dispo = df_8th['Dispensary'].unique()
for i in dispo:
    # 新建独立画布,可自行调整figsize参数适配标签长度
    plt.figure(figsize=(10, 8))
    df_loop = df.loc[(df['Dispensary'] == i)]
    c1 = sns.countplot(y="Brand Name", data=df_loop)
    c1.set(title = f"{i} Flower Sku Count")
    c1.tick_params(axis='x', rotation=0)
    # 保存时添加bbox_inches='tight'避免品牌名称标签被截断
    c1.figure.savefig(f"count_charts/{i} Brand Skus.png", format="PNG", bbox_inches='tight')
    # 关闭当前画布,避免内容叠加
    plt.close()

如果偏好面向对象的绘图写法,也可以用如下写法:

import matplotlib.pyplot as plt
import seaborn as sns

dispo = df_8th['Dispensary'].unique()
for i in dispo:
    fig, ax = plt.subplots(figsize=(10, 8))
    df_loop = df.loc[(df['Dispensary'] == i)]
    sns.countplot(y="Brand Name", data=df_loop, ax=ax)
    ax.set(title = f"{i} Flower Sku Count")
    ax.tick_params(axis='x', rotation=0)
    fig.savefig(f"count_charts/{i} Brand Skus.png", format="PNG", bbox_inches='tight')
    plt.close(fig)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:30:04