使用矩阵图进行可视化
现在是尝试您的第一个"进阶"图可视化方法的时候了:矩阵图。为此,nxviz 提供了 matrix() 函数。这个函数与 nxviz 顶层 API 的其他函数一样,会返回一个 matplotlib 的坐标轴对象,您可以用 plt.show() 将其显示出来。
nxviz 是一个用于以更合理方式可视化图的包。在底层,matrix 函数会调用 nx.to_numpy_array(G),返回图的矩阵形式。这里每个节点对应一列和一行,两个节点之间若存在一条边,则用值 1 表示。不过,这样做只会保留 weight 元数据;其他所有元数据都会丢失。您将通过一个 assert 语句来验证这一点。
相应地,nx.from_numpy_array(A) 允许您从一个 NumPy 数组快速创建图。默认的图类型是 Graph();如果您想创建 DiGraph(),需要通过 create_using 关键字参数指定,例如(nx.from_numpy_array(A, create_using=nx.DiGraph))。
最后说明一下,matplotlib.pyplot 和 networkx 已分别以 plt 和 nx 导入,图 T 也已预加载。为简化与加速,我们仅从网络中抽取了 100 条边进行子采样。
本练习是课程的一部分
Python 网络分析入门
练习说明
- 从
nxviz导入matrix。 - 将图
T绘制为矩阵图。具体步骤:- 使用
nv.matrix()函数并传入T创建名为m的矩阵图。 - 使用
plt.show()显示图形。
- 使用
- 将图转换为矩阵格式,然后再从该矩阵将图转换回 NetworkX 形式的有向图。这部分已为您完成。
- 检查每个节点的
category元数据字段是否丢失。这部分也已为您完成,点击 "Submit Answer" 查看结果!
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Import nxviz
____
# Create the matrix plot: m
m = ____
# Display the plot
____
# Convert T to a matrix format: A
A = nx.to_numpy_array(T)
# Convert A back to the NetworkX form as a directed graph: T_conv
T_conv = nx.from_numpy_array(A, create_using=nx.DiGraph())
# Check that the `category` metadata field is lost from each node
for n, d in T_conv.nodes(data=True):
assert 'category' not in d.keys()