Note
Go to the end to download the full example code.
谱嵌入#
谱布局根据图拉普拉斯矩阵 \(L = D - A\) 的特征向量来定位图的节点,其中 \(A\) 是邻接矩阵,\(D\) 是图的度矩阵。
默认情况下,谱布局将在二维空间中嵌入图(你可以使用 dim
参数在其他维度中嵌入图,该参数可用于 draw_spectral()
或 spectral_layout()
)。
当图的边表示相邻节点之间的相似性时,谱嵌入会将高度相似的节点放置得比不太相似的节点更接近。
这在谱嵌入网格图时尤为明显。在完整的网格图中,中心节点的分离程度比边缘节点更大。随着移除内部节点,这种效果会增强。
import matplotlib.pyplot as plt
import networkx as nx
options = {"node_color": "C0", "node_size": 100}
G = nx.grid_2d_graph(6, 6)
plt.subplot(332)
nx.draw_spectral(G, **options)
G.remove_edge((2, 2), (2, 3))
plt.subplot(334)
nx.draw_spectral(G, **options)
G.remove_edge((3, 2), (3, 3))
plt.subplot(335)
nx.draw_spectral(G, **options)
G.remove_edge((2, 2), (3, 2))
plt.subplot(336)
nx.draw_spectral(G, **options)
G.remove_edge((2, 3), (3, 3))
plt.subplot(337)
nx.draw_spectral(G, **options)
G.remove_edge((1, 2), (1, 3))
plt.subplot(338)
nx.draw_spectral(G, **options)
G.remove_edge((4, 2), (4, 3))
plt.subplot(339)
nx.draw_spectral(G, **options)
plt.show()
Total running time of the script: (0 minutes 0.119 seconds)