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

Seaborn绘图:保留坐标轴字体大小,解决顶部标签重叠问题

解决Seaborn Relplot顶部标签重叠问题

方法1:单独调整顶部标签字体大小

Seaborn的relplot返回FacetGrid对象,你可以直接遍历子图,单独修改顶部标签的字体大小,不影响坐标轴文字:

import seaborn as sns
import matplotlib.pyplot as plt

# 示例数据+模拟长标签
tips = sns.load_dataset("tips")
tips["long_col_label"] = tips["day"].apply(lambda x: f"超长分类标签_{x}_附加描述文本")

# 保持talk上下文确保坐标轴字体清晰
sns.set_context("talk")
g = sns.relplot(data=tips, x="total_bill", y="tip", col="long_col_label", col_wrap=4)

# 遍历所有子图,修改顶部标签字体
for ax in g.axes.flat:
    title_text = ax.get_title()
    if title_text:  # 跳过无标签的空位子图
        ax.set_title(title_text, fontsize=12)  # 按需设置字体大小

plt.tight_layout()
plt.show()

方法2:让顶部标签自动换行

方案A:手动给标签插入换行符

提前对长标签按字符长度拆分,加入\n实现换行:

import seaborn as sns
import matplotlib.pyplot as plt

# 定义换行函数
def wrap_label(text, line_width=15):
    return '\n'.join([text[i:i+line_width] for i in range(0, len(text), line_width)])

tips = sns.load_dataset("tips")
tips["long_col_label"] = tips["day"].apply(lambda x: wrap_label(f"超长分类标签_{x}_附加描述文本"))

sns.set_context("talk")
g = sns.relplot(data=tips, x="total_bill", y="tip", col="long_col_label", col_wrap=4)

plt.tight_layout()
plt.show()

方案B:利用Matplotlib自动换行

通过设置标题的wrap参数,让Matplotlib自动处理换行:

import seaborn as sns
import matplotlib.pyplot as plt

tips = sns.load_dataset("tips")
tips["long_col_label"] = tips["day"].apply(lambda x: f"超长分类标签_{x}_附加描述文本")

sns.set_context("talk")
g = sns.relplot(data=tips, x="total_bill", y="tip", col="long_col_label", col_wrap=4)

for ax in g.axes.flat:
    title_text = ax.get_title()
    if title_text:
        ax.set_title(title_text, wrap=True)
        # 限制标题宽度为子图宽度的80%,确保换行合理
        ax.title.set_width(ax.get_window_extent().width * 0.8)

plt.tight_layout()
plt.show()

补充提示

  • 如果是row参数生成的子图,标签在左侧,可通过ax.get_ylabel()获取文本后修改,逻辑一致。
  • 最后调用plt.tight_layout()能自动优化子图间距,进一步减少重叠概率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:39:57