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

如何对DGL数据集中的图进行可视化?

DGL Cora数据集图可视化实现方案(基于matplotlib)

首先需要先安装依赖库:

pip install matplotlib networkx

完整实现代码

import dgl
import torch
import matplotlib.pyplot as plt
import networkx as nx
from dgl.data import CoraGraphDataset

# 加载数据集(和你提供的代码逻辑一致)
dataset = CoraGraphDataset()
g = dataset[0]

# 1. 将DGL图对象转换为NetworkX图
# 不需要保留有向关系的话可以加to_undirected()减少视觉复杂度
nx_g = g.to_networkx().to_undirected()

# 2. 配置节点颜色,对应Cora的7类论文标签
labels = g.ndata['label']
color_map = plt.get_cmap('tab10', 7)
node_colors = [color_map(label.item()) for label in labels]

# 3. 生成图布局,spring布局适合展示网络拓扑结构
# k参数控制节点间距,数值越大节点越分散
pos = nx.spring_layout(nx_g, seed=42, k=0.15)

# 4. 绘制图形
plt.figure(figsize=(16, 12), dpi=100)
# 先绘制边,设置低透明度避免遮挡节点
nx.draw_networkx_edges(nx_g, pos, alpha=0.2, width=0.5)
# 再绘制节点,配置大小和对应类别的颜色
nx.draw_networkx_nodes(nx_g, pos, node_size=20, node_color=node_colors)

# 配置类别图例
sm = plt.cm.ScalarMappable(cmap=color_map, norm=plt.Normalize(vmin=0, vmax=6))
sm.set_array([])
cbar = plt.colorbar(sm, ticks=range(7))
cbar.set_label('论文类别标签', fontsize=12)

plt.axis('off')
plt.title('Cora引文网络可视化', fontsize=16)
plt.show()

优化建议

  • 如果觉得全图节点太密集,可以抽取子图绘制,示例如下:
# 随机抽取200个节点生成子图
sample_nodes = torch.randperm(g.num_nodes())[:200]
sub_g = dgl.node_subgraph(g, sample_nodes)
# 后续绘制逻辑和上面完全一致,只需把nx_g替换为sub_g转换的NetworkX对象即可
  • 可以自行调整spring_layout的k参数、节点大小node_size、边透明度alpha参数,适配你需要的展示效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:36:01