Plotly scatter3d设置aspectmode为data时坐标轴比例不一致问题
Plotly 3D图表坐标轴16:9比例适配方案
你遇到的拉伸问题是aspectmode="data"的默认计算逻辑导致的:该模式下三个坐标轴的显示长度完全由各自的数值范围比值决定,你没有手动限定x轴(frame字段)的数值范围,x轴的数值范围会参与比例计算,最终打乱了y轴和z轴的16:9比例。
你当前渲染得到的异常拉伸效果图如下:
修复方法
将aspectmode改为manual手动指定各轴比例即可,确保y和z的比例为16:9,修改后的代码如下:
fig = go.Figure( data = go.Scatter3d( x=df['frame'], y=df['x'], z=df['y'], mode='markers', marker=dict( color=clusters.labels_, colorscale="Cividis", opacity=0.8 ) ) ) # 切换为手动比例模式 fig['layout']['scene']['aspectmode'] = "manual" # 手动设置三轴比例,y:z严格为16:9,x的数值可根据实际frame范围按需调整 fig['layout']['scene']['aspectratio'] = {"x": 3, "y": 16, "z":9} fig['layout']['scene']['zaxis']['range'] = [1080, 0] fig['layout']['scene']['yaxis']['range'] = [0, 1920] fig.show()
- 如果你希望x轴也按实际数值比例显示,只需要将
aspectratio中x的取值替换为x轴的实际数值范围长度即可,比如x轴frame的取值范围是0到600,就将x的值设为6。 - 该配置不会受x轴数值范围影响,可以始终保证y轴和z轴的显示比例为16:9。
内容的提问来源于stack exchange,提问作者Austin Ulfers
相关产品推荐
相关产品推荐

