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

如何用Python的Networkx等库可视化人员ID与技能ID组成的元组列表数据

实现方案

你手里的人员-技能关联元组是典型的二分网络结构,用NetworkX做可视化非常方便,也可以选择PyVis实现交互式效果,具体实现步骤如下:


1. 依赖安装

先安装需要的基础库:
pip install networkx matplotlib

如果需要做交互式可视化,额外安装PyVis:
pip install pyvis


2. 静态可视化(NetworkX + Matplotlib)

可以把人员、技能拆分为两类节点,分左右两列展示关联关系,直接可运行的示例代码如下:

import networkx as nx
import matplotlib.pyplot as plt
from networkx.algorithms import bipartite

# 替换为你自己的元组列表即可
skill_edges = [
    ("P1", "S1"), ("P1", "S2"), ("P2", "S2"),
    ("P3", "S1"), ("P3", "S3"), ("P4", "S2"), ("P4", "S3")
]

# 初始化无向图并批量添加边
G = nx.Graph()
G.add_edges_from(skill_edges)

# 拆分两类节点
person_nodes = {n for n, _ in skill_edges}
skill_nodes = {n for _, n in skill_edges}

# 二分图专用布局,把人员节点统一放在左侧
pos = nx.bipartite_layout(G, person_nodes)

# 区分绘制两类节点
nx.draw_networkx_nodes(G, pos, nodelist=person_nodes, node_color="#87CEEB", node_size=1500)
nx.draw_networkx_nodes(G, pos, nodelist=skill_nodes, node_color="#FFA500", node_size=1500)

# 绘制边和节点标签
nx.draw_networkx_edges(G, pos, edge_color="gray")
nx.draw_networkx_labels(G, pos, font_size=10, font_weight="bold")

# 隐藏坐标轴
plt.axis("off")
plt.show()

3. 交互式可视化(PyVis)

如果需要支持拖拽、缩放、点击查看节点详情的效果,可以用PyVis实现:

from pyvis.network import Network

skill_edges = [
    ("P1", "S1"), ("P1", "S2"), ("P2", "S2"),
    ("P3", "S1"), ("P3", "S3"), ("P4", "S2"), ("P4", "S3")
]
person_nodes = {n for n, _ in skill_edges}

# 初始化网络画布
net = Network(notebook=False, height="700px", width="100%")

# 给不同类型节点设置不同样式和悬浮提示
for n in person_nodes:
    net.add_node(n, color="#87CEEB", size=20, title=f"人员ID: {n}")
for _, s in skill_edges:
    net.add_node(s, color="#FFA500", size=20, title=f"技能ID: {s}")

# 添加关联边
for p, s in skill_edges:
    net.add_edge(p, s)

# 生成html文件,打开即可交互操作
net.show("person_skill.html")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:06:04