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

如何调整所有Seaborn图表的大小,解决catplot尺寸设置不生效问题

Seaborn分面图表尺寸调整方案

失效原因

你之前尝试的尺寸调整方法仅对单Axes的绘图接口(比如sns.lineplot、sns.barplot)生效,而sns.catplot是基于FacetGrid的分面绘图接口,会生成独立的画布对象,全局画布尺寸配置默认不会作用于这类接口。

可用调整方法

方法1:绘图时直接配置子图尺寸(最推荐)

通过height和aspect两个参数直接控制每个子图的尺寸:

  • height:每个子图的高度,单位为英寸
  • aspect:每个子图的宽高比,子图宽度 = height * aspect
    配合col_wrap参数控制每行显示的子图数量,避免横向排列过挤:
import matplotlib.pyplot as plt
import seaborn as sns

dfm = df.melt(id_vars=['Month', 'Building'], value_vars=['Expense', 'Revenue'])
g = sns.catplot(
    kind='bar', 
    data=dfm, 
    x='Month', 
    y='value', 
    hue='variable', 
    col='Building',
    col_wrap=3, # 每行显示3个子图
    height=3.5, # 每个子图高度3.5英寸
    aspect=1.1 # 每个子图宽高比1.1
)
# 自动调整子图间距避免标签重叠
g.tight_layout()
plt.show()

方法2:生成FacetGrid对象后调整整体画布尺寸

如果已经完成绘图,可以直接修改FacetGrid绑定的画布尺寸:

g = sns.catplot(kind='bar', data=dfm, x='Month', y='value', hue='variable', col='Building')
# 直接设置整个画布的宽度、高度,单位为英寸
g.fig.set_size_inches(20, 10)
g.tight_layout()
plt.show()

附加:放大文本元素

如果调整尺寸后文字还是过小,可以全局缩放所有文本元素:

# 数值越大,所有标签、刻度、标题的字号越大
sns.set(font_scale=1.3)
# 后续再执行绘图代码即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:03:03