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

Python Plotly绘制子图时第一个子图标题无法显示如何修复

问题原因

第一个子图标题丢失绝大多数是默认布局下3行1列子图的垂直间距太小,最上方的第一个子图标题超出了画布可视范围被截断,下方两个子图位置靠下所以不受影响。

修复方案

你需要在初始化子图时显式调大垂直间距,同时可调整画布顶部边距给标题预留足够空间,修改后的代码如下:

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

# 原有变量定义
amplitude1 = int(input('Amplitude 1 is '))
amplitude2 = int(input('Amplitude 2 is '))
amplitude3 = int(input('Amplitude 3 is '))
frequency1 = 1
frequency2 = 10
frequency3 = 50
time = np.linspace(0, 1, 1000) # 按需调整time的采样范围和精度
theta = 0 # 按需调整相位参数
sinewave1 = amplitude1 * np.sin(2 * np.pi * frequency1 * time + theta)
sinewave2 = amplitude2 * np.sin(2 * np.pi * frequency2 * time + theta)
sinewave3 = amplitude3 * np.sin(2 * np.pi * frequency3 * time + theta)

titles = (f'f1 = {frequency1} Hz, A = {amplitude1}',
    f'f2 = {frequency2} Hz, A = {amplitude2}',
    f'f3 = {frequency3} Hz, A = {amplitude3}' 
)

# 核心修改点:增加vertical_spacing参数调大子图垂直间距
fig = make_subplots(
    rows=3, cols=1,
    subplot_titles=titles, # 不需要额外套括号,直接传titles元组即可
    vertical_spacing=0.15 # 数值可根据实际显示效果调整,越大子图间距越宽
)

# 添加三个子图的波形轨迹
fig.add_trace(go.Scatter(x=time, y=sinewave1), row=1, col=1)
fig.add_trace(go.Scatter(x=time, y=sinewave2), row=2, col=1)
fig.add_trace(go.Scatter(x=time, y=sinewave3), row=3, col=1)

# 可选补充:调大画布顶部边距,彻底避免顶部标题被截断
fig.update_layout(
    margin=dict(t=100) # t是顶部边距,单位为像素,数值越大顶部留白越多
)

fig.show()

如果修改后还是看不到第一个标题,可以检查后续代码是否有修改fig.layout.annotations的逻辑,子图标题本质是存在这个属性里的标注元素,误操作删除/修改第一个元素也会导致标题消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:15:02