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

如何使用pyvis绘制按社区标签为同组节点着色的网络图

pyvis完全支持按社区标签为节点着色的需求,你只需要为节点指定color属性即可,具体实现方法如下:

实现步骤

1. 准备社区映射与颜色映射

首先你需要将已得到的社区标签转换为「节点-颜色」的对应关系,示例如下:

# 假设你的社区标签结果是如下格式的字典:key为城市节点名,value为社区编号
community_labels = {
    "北京": 0,
    "上海": 0,
    "广州": 1,
    "深圳": 1,
    "成都": 2,
    "重庆": 2
}
# 预定义不同社区对应的颜色,可根据你的社区总数调整数量
color_list = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FFEAA7", "#DDA0DD"]
# 生成节点颜色映射
node_color_map = {node: color_list[label % len(color_list)] for node, label in community_labels.items()}

2. 为节点添加颜色属性(两种方案可选)

方案1:先给NetworkX图添加属性再导入pyvis

这是最简便的方案,pyvis会自动识别NetworkX节点的color属性:

import networkx as nx
from pyvis.network import Network

# G为你已经构建好的NetworkX图
for node in G.nodes:
    G.nodes[node]["color"] = node_color_map[node]

# 后续流程和你原有的代码一致
net = Network(height='800px', width='800px', directed=False, notebook=True)
net.from_nx(G)
net.show("example.html")

方案2:直接修改pyvis生成后的节点属性

如果你已经执行了from_nx导入,也可以直接遍历pyvis的节点列表修改:

from pyvis.network import Network
net = Network(height='800px', width='800px', directed=False, notebook=True)
net.from_nx(G)

# 遍历修改节点颜色
for node in net.nodes:
    # node["id"]对应你原始的城市节点名
    node["color"] = node_color_map[node["id"]]

net.show("example.html")

补充说明

  • 如果你的社区数量超过预定义的颜色列表长度,代码里的label % len(color_list)会自动循环复用颜色,你也可以根据需要扩展color_list的颜色值
  • 除了纯色填充,你也可以给color属性传字典实现更复杂的节点样式,比如{"border": "#2B2B2B", "background": "#FF6B6B", "highlight": {"border": "#000000", "background": "#FF8C8C"}},可自定义边框、hover高亮的颜色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:09:04