You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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

火山引擎 最新活动