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

如何关闭px.bar叠加分面图右侧垂直关键短语标签并在子图内水平显示

解决你的Plotly条形图标签问题

我来帮你搞定这个右侧垂直标签重叠的问题!咱们分两步走:先把烦人的右侧垂直标签关掉,再把长关键短语水平放到每个子图内部,这样既美观又清晰。

1. 隐藏右侧的垂直"Key_phrases"标签

Plotly用facet_row时默认会在右侧显示垂直的行标签,咱们直接把这些标签隐藏掉就行。只需要在绘图后加一行代码:

# 遍历所有注释,隐藏facet的行标签
fig.for_each_annotation(lambda a: a.update(visible=False))

2. 把关键短语水平放到子图内部

接下来咱们把每个长短语加到对应子图的合适位置,比如左上角或者顶部中心,这样就不会重叠了。这里需要先获取所有的关键短语,然后逐个给子图加注释:

方法一:放在子图左上角

# 获取所有唯一的关键短语(假设你的数据框是df)
key_phrases = df["Key_phrases"].unique()

# 遍历每个短语和对应的子图
for i, phrase in enumerate(key_phrases):
    fig.add_annotation(
        text=phrase,
        xref=f"x{i+1}",  # 对应第i+1个子图的X轴
        yref=f"y{i+1}",  # 对应第i+1个子图的Y轴
        x=0.02,  # 水平靠左的位置
        y=1.05,  # 子图顶部上方一点的位置
        showarrow=False,  # 不需要箭头
        font=dict(size=12),
        xanchor="left"  # 文本左对齐
    )

方法二:放在子图顶部中心

如果更喜欢居中的标题风格,只需要调整x和xanchor参数:

fig.add_annotation(
    text=phrase,
    xref=f"x{i+1}",
    yref=f"y{i+1}",
    x=0.5,  # 水平居中
    y=1.05,
    showarrow=False,
    font=dict(size=12),
    xanchor="center"  # 文本居中对齐
)

3. 可选:调整子图间距

如果添加的注释和条形图靠得太近,咱们可以拉大子图之间的间距:

fig.update_layout(facet_row_spacing=0.15)  # 数值越大,间距越宽,根据你的需求调整

完整示例代码

给你一个完整的可运行示例,方便你参考:

import pandas as pd
import plotly.express as px

# 模拟你的数据结构
df = pd.DataFrame({
    "Time": pd.date_range(start="2023-01-01", periods=10, freq="D"),
    "Value": [10,15,12,18,20,17,14,22,25,21],
    "Key_phrases": [
        "Long key phrase one about data trends",
        "Another very long key phrase about user behavior",
        "Third lengthy key phrase about product performance",
        "Fourth super long key phrase about market analysis",
        "Fifth long key phrase about operational metrics"
    ] * 2
})

# 绘制原始的分面子图
fig = px.bar(df, x="Time", y="Value", facet_row="Key_phrases", barmode="overlay")

# 隐藏右侧垂直标签
fig.for_each_annotation(lambda a: a.update(visible=False))

# 添加子图内部的水平短语标签
key_phrases = df["Key_phrases"].unique()
for i, phrase in enumerate(key_phrases):
    fig.add_annotation(
        text=phrase,
        xref=f"x{i+1}",
        yref=f"y{i+1}",
        x=0.02,
        y=1.05,
        showarrow=False,
        font=dict(size=11),
        xanchor="left"
    )

# 调整子图间距
fig.update_layout(facet_row_spacing=0.12)

fig.show()

这样处理后,右侧的垂直标签就完全消失了,每个子图的顶部都会水平显示对应的长关键短语,再也不会重叠啦!

内容的提问来源于stack exchange,提问作者lee b.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:32:36