Построение графов с использованием двух нижних собственных значений и собственных векторов

Как использовать собственные векторы, соответствующие двум самым низким собственным значениям (отличным от 0), в качестве координат x,y для построения графика?

У меня есть массивы собственных значений и собственных векторов из лапласиана графа узлов. Я хочу сделать что-то похожее на следующую ссылку, которая находится в MATLAB, но в Python. Кроме того, вместо вектора Филдера я также хочу, чтобы следующий вектор был больше, чем у Филдера:

https://www.mathworks.com/examples/matlab/mw/matlab-ex64540792-partition-graph-with-laplacian-matrix

Заранее спасибо!

1 ответ

Решение

Этот ответ предполагает, что у вас уже есть узлы в списке nodelist и два вектора vec1 а также vec2 которые в том же порядке.

Networkx использует dict (обычно называется pos) для которого pos[u] это (x,y) координаты узла u,

import networkx as nx

#your code here to define network and find the vectors.  
#Please edit a simple version of this code into your question so I can
#add it here.

pos = {node:(x,y) for node, x, y in zip(nodelist, vec1, vec2)}
nx.draw_networkx(G, pos=pos)

В определении posЯ использовал понимание и диктовку.

Другие вопросы по тегам