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

Plotly一行两列分面图如何指定注释所属的对应子图?

问题原因

Plotly 子图的坐标轴按创建顺序编号,第一列子图默认绑定xaxis/yaxis,第二列子图对应xaxis2/yaxis2。未指定坐标轴引用的注释会默认绑定到第一个子图的坐标轴,因此只会显示在第一列分面中。

解决方法

给每个注释字典添加xref和yref参数,指定其绑定的坐标轴即可:

  • 要显示在第一列分面的注释,设置'xref': 'x', 'yref': 'y'(也可以省略不写,默认就是该值)
  • 要显示在第二列分面的注释,设置'xref': 'x2', 'yref': 'y2'

修改后代码示例

annots = [
    # 第一列分面的注释
    {'x': datetime.datetime(2021, 5, 5, 14, 4, 47, 398000), 'y': 125.5, 'text': '8', 'font': {'color': 'black'}, 'xref': 'x', 'yref': 'y'},
    {'x': datetime.datetime(2021, 5, 5, 14, 4, 47, 545000), 'y': 123.5, 'text': '3', 'font': {'color': 'black'}, 'xref': 'x', 'yref': 'y'},
    # 第二列分面的注释
    {'x': datetime.datetime(2021, 5, 5, 14, 4, 47, 583000), 'y': 120.5, 'text': '9', 'font': {'color': 'black'}, 'xref': 'x2', 'yref': 'y2'}
]

# 后续layout构建逻辑无需改动
layout = dict(showlegend=False, height=HEIGHT, annotations=annots, barmode='overlay', hoverlabel=hoverlabel, legend=legend, margin=margin, xaxis=xaxes1, xaxis2=xaxes2, yaxis=yaxes1, yaxis2=yaxes2)
fig = go.Figure(data=data, layout=layout)

补充说明

如果你是通过plotly.subplots.make_subplots创建的分面图,调用fig.add_annotation()时直接传入row和col参数也可以自动绑定对应分面的坐标轴,底层逻辑和手动设置xref/yref完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:54:02