如何实现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()
关键修改点
- 在滑块步骤的
args参数中,第三个值传入[0],表示仅更新索引为0的trace(即第一张添加的图像)。 - 移除了原代码中错误传入的
{"row":1, "col":1},该参数位置应为trace索引列表,而非子图位置。
内容的提问来源于stack exchange,提问作者David Rouyre
相关产品推荐
相关产品推荐

