| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- """
- ==================
- Spectral Embedding
- ==================
- The spectral layout positions the nodes of the graph based on the
- eigenvectors of the graph Laplacian $L = D - A$, where $A$ is the
- adjacency matrix and $D$ is the degree matrix of the graph.
- By default, the spectral layout will embed the graph in two
- dimensions (you can embed your graph in other dimensions using the
- ``dim`` argument to either :func:`~drawing.nx_pylab.draw_spectral` or
- :func:`~drawing.layout.spectral_layout`).
- When the edges of the graph represent similarity between the incident
- nodes, the spectral embedding will place highly similar nodes closer
- to one another than nodes which are less similar.
- This is particularly striking when you spectrally embed a grid
- graph. In the full grid graph, the nodes in the center of the
- graph are pulled apart more than nodes on the periphery.
- As you remove internal nodes, this effect increases.
- """
- 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()
|