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

如何使用networkx与plotly创建交互式脑形3D可视化图?

完全可以实现,以下是可直接落地的实现方案

你所参考的类人脑3D节点效果图:
示例图

实现方案

1. 核心逻辑

  • networkx负责存储节点、边、自定义属性(比如节点颜色标记),人脑外形的节点坐标可以通过变形椭球采样/公开人脑点云数据集获取,无需依赖networkx的默认布局算法。
  • plotly负责渲染3D节点、可选连线,自带旋转、缩放、悬停显示节点信息的原生交互能力。

2. 完整可运行代码示例

第一步:环境依赖安装

pip install numpy networkx plotly

第二步:代码实现

import numpy as np
import networkx as nx
import plotly.graph_objects as go

# ---------------------- 1. 生成类人脑外轮廓3D节点坐标 ----------------------
# 用变形椭球模拟人脑外形,无需额外3D建模,效果和参考图接近
total_nodes = 500  # 可自行调整总节点数量
theta = np.random.uniform(0, 2 * np.pi, total_nodes)
phi = np.random.uniform(0, np.pi, total_nodes)
# 三轴半径调整模拟人脑扁长形态,加扰动模拟表面褶皱
radius = 1 + 0.1 * np.sin(3 * theta) * np.cos(phi)
x = radius * np.sin(phi) * np.cos(theta) * 1.2
y = radius * np.sin(phi) * np.sin(theta) * 0.9
z = radius * np.cos(phi) * 1.0

# ---------------------- 2. 构建networkx图并绑定节点属性 ----------------------
G = nx.Graph()
# 此处替换为你需要高亮的指定节点ID列表
highlight_node_ids = [12, 36, 78, 123, 245, 369, 410]
for node_id in range(total_nodes):
    G.add_node(
        node_id,
        pos=(x[node_id], y[node_id], z[node_id]),
        # 自定义高亮节点和普通节点的颜色
        color="#ff2b2b" if node_id in highlight_node_ids else "#a8d1ff"
    )
# 若需要展示边,可自行调用G.add_edge()添加关联关系,无需求可以只保留节点

# ---------------------- 3. 用plotly渲染交互3D可视化 ----------------------
# 提取节点坐标和颜色配置
node_x = [G.nodes[n]["pos"][0] for n in G.nodes]
node_y = [G.nodes[n]["pos"][1] for n in G.nodes]
node_z = [G.nodes[n]["pos"][2] for n in G.nodes]
node_color_list = [G.nodes[n]["color"] for n in G.nodes]

# 绘制3D节点散点
fig = go.Figure(data=[go.Scatter3d(
    x=node_x,
    y=node_y,
    z=node_z,
    mode="markers",
    marker=dict(
        size=5,
        color=node_color_list,
        opacity=0.85
    ),
    # 悬停显示节点ID,可自定义为其他节点属性
    hovertext=[f"节点ID:{n}" for n in G.nodes]
)])

# 优化布局,隐藏坐标轴更美观
fig.update_layout(
    scene=dict(
        xaxis=dict(showticklabels=False, showbackground=False, title=""),
        yaxis=dict(showticklabels=False, showbackground=False, title=""),
        zaxis=dict(showticklabels=False, showbackground=False, title="")
    ),
    showlegend=False,
    height=800,
    margin=dict(l=0, r=0, t=0, b=0)
)

# 打开浏览器展示交互可视化结果
fig.show()

3. 效果优化说明

  • 若需要完全匹配真实人脑轮廓,可替换代码中生成椭球坐标的部分,改用公开的人脑3D表面点云数据集的坐标即可,networkx和plotly的渲染逻辑无需改动。
  • 节点大小、颜色、透明度均可直接修改plotly的marker参数调整,边的样式也可单独配置。
  • 若不需要展示边,直接保留现有代码的节点逻辑即可,实现成本最低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:15:02