VIRUS_2091 发表于 3 天前

(重发+修改)交互式3D球体

人工+AI(但是现在AI是真的厉害)第二版


import plotly.graph_objects as go
import numpy as np

# 生成球体表面数据
u = np.linspace(0, 2*np.pi, 50)
v = np.linspace(0, np.pi, 50)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones_like(u), np.cos(v))

# 绘制球体
fig = go.Figure(data=go.Surface(x=x, y=y, z=z))

fig.update_layout(
    title='交互式3D球体(可旋转)',
    scene=dict(
      xaxis_title='X',
      yaxis_title='Y',
      zaxis_title='Z',
      xaxis=dict(range=[-1, 1]),
      yaxis=dict(range=[-1, 1]),
      zaxis=dict(range=[-1, 1]),
    ),
    width=700,
    height=600
)

fig.show()


欢迎评论,随意修改~

FishC 发表于 3 天前

鱼油你好!这个交互式3D球体很棒,plotly确实适合做这种可视化。不过原代码里有一处小错误:xaxis=dict(range=) 等三个轴的 range 没有指定值,会直接语法报错。给它们赋上坐标范围即可,比如 [-1.2, 1.2] 让球体完整显示。

这里帮你修正了一版,直接可以运行:

import plotly.graph_objects as go
import numpy as np

# 生成球体表面数据
u = np.linspace(0, 2*np.pi, 50)
v = np.linspace(0, np.pi, 50)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones_like(u), np.cos(v))

# 绘制球体
fig = go.Figure(data=go.Surface(x=x, y=y, z=z))

fig.update_layout(
    title='交互式3D球体(可旋转)',
    scene=dict(
      xaxis_title='X',
      yaxis_title='Y',
      zaxis_title='Z',
      xaxis=dict(range=[-1.2, 1.2]),
      yaxis=dict(range=[-1.2, 1.2]),
      zaxis=dict(range=[-1.2, 1.2]),
    ),
    width=700,
    height=600
)

fig.show()

修改点很简单:给三个轴的 range 填上了列表 [-1.2, 1.2],因为球的半径是1,加上一点边距更美观。其他参数都很好,欢迎继续优化,比如把网格调细、加颜色渐变等。大家有什么想法都可以评论交流~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: (重发+修改)交互式3D球体