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

如何使用Plotly.express将3D散点图坐标轴固定在(0,0,0)原点

Plotly.express 3D散点图固定坐标轴交汇于(0,0,0)实现方案

Plotly 没有和 matplotlib 完全同名的 xlim/ylim 参数,坐标轴范围、原点交汇效果都可以通过布局配置实现,具体操作如下:

  • 首先修正基础代码的错误:3D散点图需要调用scatter_3d方法,不能使用2D散点的scatter接口,基础绘图代码参考:
import plotly.express as px
# 3D散点图需传入x/y/z三个维度的字段
fig = px.scatter_3d(
    data_frame=data,
    x="X",
    y="Y",
    z="Z"
)
  • 手动指定三个坐标轴的数值范围,强制轴起点为0:默认坐标轴从-200起步是Plotly自动给数据集加的留白边距,通过update_layout下的scene配置项可以自定义各轴范围,效果等价于matplotlib的轴范围设置:
# 提前计算三个维度的最大值,作为坐标轴上限
x_max = data["X"].max()
y_max = data["Y"].max()
z_max = data["Z"].max()

fig.update_layout(
    scene = dict(
        xaxis = dict(range=[0, x_max]),
        yaxis = dict(range=[0, y_max]),
        zaxis = dict(range=[0, z_max]),
    )
)
  • 可选配置:如果需要强化原点交汇的显示效果,可以额外开启零刻度线显示,调整视角让原点更突出:
fig.update_layout(
    scene = dict(
        xaxis = dict(
            range=[0, x_max],
            zeroline=True,
            zerolinewidth=2,
            zerolinecolor='#333333'
        ),
        yaxis = dict(
            range=[0, y_max],
            zeroline=True,
            zerolinewidth=2,
            zerolinecolor='#333333'
        ),
        zaxis = dict(
            range=[0, z_max],
            zeroline=True,
            zerolinewidth=2,
            zerolinecolor='#333333'
        ),
        # 调整视角,避免坐标轴遮挡
        camera_eye=dict(x=1.2, y=1.2, z=1.2)
    )
)

配置完成后调用fig.show()渲染图表,即可得到X/Y/Z三轴交汇于(0,0,0)原点的3D散点图,不会再出现坐标轴从-200起步的默认留白问题。

内容的提问来源于stack exchange,提问作者Ankur Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 15:21:26