Plotly子图Y轴标签位置调整:如何将标签置于子图之间?
Plotly子图Y轴标签置于两图中间的实现方法
核心思路是隐藏两个子图的原生Y轴标签,通过自定义注释(annotation)将标签放置在两图的垂直中间位置,这是Plotly中实现该需求最灵活的方案。
具体代码实现
import plotly.graph_objects as go from plotly.subplots import make_subplots # 创建垂直堆叠的子图(根据需求调整rows/cols) fig = make_subplots(rows=2, cols=1, shared_xaxes=True) # 向子图添加示例数据 fig.add_trace(go.Scatter(x=[1,2,3], y=[4,5,6]), row=1, col=1) fig.add_trace(go.Scatter(x=[1,2,3], y=[7,8,9]), row=2, col=1) # 隐藏两个子图的原生Y轴标签 fig.update_yaxes(title_text="", row=1, col=1) fig.update_yaxes(title_text="", row=2, col=1) # 添加自定义Y轴标签到两图中间位置 fig.add_annotation( text="自定义Y轴标签", # 替换为你的标签文本 xref="paper", yref="paper", x=-0.1, # 左右位置微调,负数表示在画布左侧 y=0.5, # 垂直居中,刚好处于两子图中间 showarrow=False, font=dict(size=14), textangle=-90 # 旋转文字,匹配Y轴标签方向 ) # 调整左侧边距,避免标签被截断 fig.update_layout(margin=dict(l=80)) fig.show()
关键调整要点
- 若子图为水平排列,只需将
y=0.5改为x=0.5,textangle=-90改为textangle=0即可 x=-0.1的数值可根据标签长度灵活调整,确保标签完全显示在画布内- 若需要更精准的轴对齐,可将
xref和yref改为对应子图的轴ID(如"y1"),但paper参考系更适配通用布局场景
内容的提问来源于stack exchange,提问作者ShayKat
相关产品推荐
相关产品推荐

