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

Plotly多行主标题遮挡子图副标题,如何下移子图调整布局?

解决Plotly多行主标题遮挡子图副标题的问题

当多行主标题和子图副标题重叠时,可通过以下两种方法调整布局,腾出足够显示空间:

方法1:调整顶部边距与子图垂直间距

通过设置图表顶部边距和子图间的垂直间距,为主标题和子图标题预留空间:

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(
    rows=2, cols=1,
    subplot_titles=("Plot 1", "Plot 2"),
    vertical_spacing=0.2  # 增大子图间垂直间距,默认值为0.1
)

fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1)
fig.add_trace(go.Scatter(x=[300, 400, 500], y=[600, 700, 800]), row=2, col=1)

title_text = "Multiple Subplots with Titles<br>Multiple Subplots with Titles<br>Multiple Subplots with Titles<br>Multiple Subplots with Titles<br>Multiple Subplots with Titles"

fig.update_layout(
    title_text=title_text,
    title_x=0.5,
    margin=dict(t=200)  # 顶部边距,根据标题行数调整像素值
)

fig.show()
  • vertical_spacing:控制上下子图的间距,数值越大间距越宽,避免子图标题和下方图表重叠。
  • margin=dict(t=200):设置图表顶部空白区域,确保多行主标题完全显示,不会遮挡第一个子图的标题。

方法2:单独调整子图标题位置

如果不想改变整体边距,可直接修改子图标题的垂直位置:

from plotly.subplots import make_subplots
import plotly.graph_objects as go

fig = make_subplots(
    rows=2, cols=1,
    subplot_titles=("Plot 1", "Plot 2")
)

fig.add_trace(go.Scatter(x=[1, 2, 3], y=[4, 5, 6]), row=1, col=1)
fig.add_trace(go.Scatter(x=[300, 400, 500], y=[600, 700, 800]), row=2, col=1)

title_text = "Multiple Subplots with Titles<br>Multiple Subplots with Titles<br>Multiple Subplots with Titles<br>Multiple Subplots with Titles<br>Multiple Subplots with Titles"

fig.update_layout(
    title_text=title_text,
    title_x=0.5,
    margin=dict(t=180)
)

# 调整第一个子图标题的垂直位置(y值越接近1越靠上)
fig.layout.annotations[0].update(y=0.95)
# 调整第二个子图标题的垂直位置
fig.layout.annotations[1].update(y=0.45)

fig.show()

Plotly的子图标题存储在fig.layout.annotations列表中,通过修改每个标题的y参数(范围0-1,1为顶部,0为底部),可精准控制其位置,避开主标题的遮挡。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 14:20:29