Dash/Plotly移动端3D图表更新时相机视角重置问题求助(已设置uirevision="lock"仍无效)
Dash/Plotly移动端3D图表更新时相机视角重置问题求助(已设置uirevision="lock"仍无效)
我正在开发一个带有3D交互图表的Dash应用,用dcc.Graph搭配plotly.graph_objs实现,还加了立方体叠加、数据筛选这类交互功能。桌面端的3D场景运行得很顺畅,但在移动端(安卓和iOS设备),每次图表更新时相机视角都会直接重置,哪怕我已经设置了uirevision="lock"也完全没用。
我的布局实现代码
layout = go.Layout( scene=dict( xaxis=dict(title='Conductivity'), yaxis=dict(title='Temperature'), zaxis=dict(title='pH'), ), margin=dict(l=0, r=0, b=0, t=40), dragmode='lasso', uirevision='lock' # 本来以为这个参数能保留相机视角 )
我还尝试过手动保存并复用相机参数
我想着通过relayoutData把当前相机视角存下来,更新时再赋值回去,代码是这样的:
if relayoutData and 'scene.camera' in relayoutData: layout['scene']['camera'] = relayoutData['scene.camera']
具体的问题表现
- 桌面端一切正常:不管是新增数据点、切换筛选条件还是添加立方体,相机视角都能稳稳保持住,完全符合预期
- 移动端浏览器(测试了Chrome安卓版和Safari iOS版):只要图表一更新,之前调整好的缩放、平移视角就全部丢失,直接回到初始状态
我已经试过的解决办法
- 设置
uirevision="lock":只在桌面端生效,移动端完全没作用 - 通过
relayoutData保存并重新赋值相机参数:移动端完全不识别这个操作 - 把
dcc.Graph包裹在dcc.Loading组件里,试图避免重渲染:结果还是一样,视角照样重置 - 避免全量更新图表:这个方案不现实,因为我确实需要更新图表的内容来展示新数据或交互结果
想请教一下,这是不是Plotly/Dash在移动端的已知限制?有没有什么办法能在移动端彻底锁定或者持久化相机视角呢?
备注:内容来源于stack exchange,提问作者Brell




