如何使用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
相关产品推荐
相关产品推荐

