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

如何避免Plotly子图中range selector按钮重复显示?

解决Plotly子图中Range Selector重复显示的问题

问题分析

你当前的代码里,update_layout中直接设置xaxis的配置会默认应用到所有子图的x轴(第一个子图x轴为xaxis,第二个为xaxis2),因此两个子图都显示了Range Selector按钮。另外注意代码中第二个trace的col=2是错误的——因为make_subplots设置了cols=1,应该改为col=1,否则会触发报错。

解决方案

单独为第一个子图的x轴配置Range Selector,同时隐藏第二个子图x轴的Range Selector:

fig = make_subplots(rows=2, cols=1)

# 添加第一个子图的曲线
fig.add_trace(
    go.Scatter(x=list(df.Date), y=list(df.Measure)), row=1, col=1
)

# 修正col参数,匹配2行1列的子图布局
fig.add_trace(
    go.Scatter(x=list(dfsecond.Date), y=list(dfsecond.Measure)), row=2, col=1
)

fig.update_layout(
    # 配置第一个子图的x轴(标识为xaxis)
    xaxis=dict(
        rangeselector=dict(
            buttons=list([
                dict(count=1,
                     label="1m",
                     step="month",
                     stepmode="backward")
            ])
        ),
        rangeslider=dict(
            visible=True
        ),
        type="date"
    ),
    # 隐藏第二个子图x轴(标识为xaxis2)的Range Selector
    xaxis2=dict(
        rangeselector=dict(visible=False),
        rangeslider=dict(visible=False),  # 可选:若不需要第二个子图的滑动条也可隐藏
        type="date"
    )
)

关键说明

  • Plotly子图的每个轴都有独立标识:第N行第M列的x轴标识为xaxis<序号>(两行一列布局下,第一个x轴是xaxis,第二个是xaxis2),y轴同理。
  • 通过单独指定每个轴的配置,可精准控制对应子图的轴显示效果。
  • 若不需要第二个子图的rangeslider,可将其设为visible=False,让布局更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:54:20