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

如何使用NetworkX在Python中绘制图的节点特征?

如何用NetworkX绘制图的节点特征?

当然可以用NetworkX绘制节点特征,针对你的节点特征值-1、0、1,有两种常用实现方式:用颜色区分特征值或者在节点标签中显示特征值,以下是修改后的代码:

方式1:用颜色映射节点特征

通过颜色直观区分不同特征值,同时添加颜色条说明对应关系:

import torch
from torch_geometric.data import Data
import networkx as nx
import matplotlib.pyplot as plt

edge_index = torch.tensor(
    [
        [0, 1, 1, 2],
        [1, 0, 2, 1]],
    dtype=torch.long)

# 节点特征
x = torch.tensor([[-1], [0], [1]], dtype=torch.float)
data = Data(x=x, edge_index=edge_index)

# 可视化部分
edge_list = edge_index.t().tolist()
G = nx.Graph()
G.add_edges_from(edge_list)
G.add_nodes_from(range(x.size(0)))

pos = nx.spring_layout(G, seed=1)  # 固定布局种子保证可复现
fig = plt.figure(figsize=(8, 6))

# 提取节点特征值,转为普通列表
node_features = x.squeeze().tolist()

# 用特征值控制节点颜色,配合颜色映射
nx.draw_networkx(G, pos, with_labels=True, 
                 node_color=node_features,
                 cmap='coolwarm',  # 选择冷暖色调映射特征值
                 edge_color='gray', 
                 node_size=800)
# 添加颜色条,明确特征值与颜色的对应关系
sm = plt.cm.ScalarMappable(cmap='coolwarm', norm=plt.Normalize(vmin=-1, vmax=1))
sm.set_array([])
plt.colorbar(sm, label='Node Feature Value')

plt.title("Social Network Graph with Node Feature Colors")
plt.axis('off')
plt.show()

方式2:在节点标签中显示特征值

直接把特征值附加到节点ID标签上,清晰展示每个节点的特征:

import torch
from torch_geometric.data import Data
import networkx as nx
import matplotlib.pyplot as plt

edge_index = torch.tensor(
    [
        [0, 1, 1, 2],
        [1, 0, 2, 1]],
    dtype=torch.long)

# 节点特征
x = torch.tensor([[-1], [0], [1]], dtype=torch.float)
data = Data(x=x, edge_index=edge_index)

# 可视化部分
edge_list = edge_index.t().tolist()
G = nx.Graph()
G.add_edges_from(edge_list)
G.add_nodes_from(range(x.size(0)))

pos = nx.spring_layout(G, seed=1)  # 固定布局种子保证可复现
fig = plt.figure(figsize=(6, 6))

# 生成包含特征值的节点标签
labels = {i: f"{i}\n({x[i].item()})" for i in range(x.size(0))}

nx.draw_networkx(G, pos, labels=labels, 
                 node_color='lightblue', 
                 edge_color='gray', 
                 node_size=800)

plt.title("Social Network Graph with Node Features in Labels")
plt.axis('off')
plt.show()

关键修改说明

  • 特征值提取:通过x.squeeze().tolist()将PyTorch Tensor格式的特征转换为普通列表,适配NetworkX的参数要求
  • 颜色映射配置:将node_color参数设置为特征值列表,配合cmap选择合适的颜色映射方案,同时添加颜色条增强可读性
  • 标签定制:通过字典生成包含节点ID和特征值的组合标签,替换默认的纯ID显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 18:25:55