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
相关产品推荐
相关产品推荐

