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

如何实现Plotly滑块仅切换单个子图(解决双图同步变更问题)

解决Plotly滑块仅控制单张并排图像的问题

问题现象

使用Plotly绘制两张并排图像时,设置滑块希望仅切换第一张图像,但操作滑块时两张图像都会被修改。

原因分析

原代码中滑块的update方法未指定目标trace,默认会对所有trace生效,导致两张图像同时被修改。需要明确指定仅更新第一张图像对应的trace。

修改后的完整代码

import plotly.express as px
import plotly.graph_objects as go
import plotly.subplots as sp
import numpy as np

image1 = np.random.randint(0, 256, size=(100, 100)).astype(np.uint8)
image2 = np.random.randint(0, 256, size=(100, 100)).astype(np.uint8)
image3 = np.random.randint(0, 256, size=(100, 100)).astype(np.uint8)

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

# 添加两张图像的trace,第一张trace索引为0,第二张为1
fig.add_trace(px.imshow(image1).data[0], row=1, col=1)
fig.add_trace(px.imshow(image2).data[0], row=1, col=2)

slider = go.layout.Slider(
    active=0,
    steps=[
        # 通过第三个参数指定仅更新索引为0的trace(第一张图像)
        {"label": "图像1", "method": "update", "args": [{"z": [image1]}, {}, [0]]},
        {"label": "图像2", "method": "update", "args": [{"z": [image2]}, {}, [0]]},
        {"label": "图像3", "method": "update", "args": [{"z": [image3]}, {}, [0]]}
    ]
)

fig.update_layout(
    sliders=[slider],
    xaxis={"title": "图像1"},
    xaxis2={"title": "图像2"}
)

fig.update_xaxes(matches='x')
fig.update_yaxes(matches='y')

fig.show()

关键修改点

  1. 在滑块步骤的args参数中,第三个值传入[0],表示仅更新索引为0的trace(即第一张添加的图像)。
  2. 移除了原代码中错误传入的{"row":1, "col":1},该参数位置应为trace索引列表,而非子图位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:54:55