How can I Plot eigenvectors of a graph on the graph as bars coming out of vertices?

8 ビュー (過去 30 日間)
After finding the eigenvalue decomposition of Laplacian matrix, I found the Fourier basis and now I want to plot some of the basis vectors on the graph. How can I obtain the plot as follows:
G = graph(weighted_adjacency);
LWidths = G.Edges.Weight/max(G.Edges.Weight);
figure;
plot(G,'XData',data(:,1),'YData' ,data(:,2),'LineWidth',LWidths);
xlabel('x');
ylabel('y');
title('Weighted Graph')
%Laplacian Matrix
%L = D - M
%Degree Matrix
degree_matrix = diag(sum(weighted_adjacency,2));
laplacian_matrix = degree_matrix - weighted_adjacency;
%Computing the eigenvalues and eigenvectors
[V, lambda] = eig(laplacian_matrix);
selected_u = [1 2 3 10 50];
fourier_basis_vectors = V(:, selected_u);
for i = 1:numel(selected_u)
basis_vector = fourier_basis_vectors(: ,i);
figure;
plot(G,'XData',data(:,1),'YData' ,data(:,2));
end

採用された回答

William Rose
William Rose 2024 年 2 月 28 日
You can plot arrows representing a 2D eigenvectors, at specific locations, with quiver(X,Y,U,V), where X and Y represnt the locaiotns of the bases of the arrows, and U,V are the x- and y-lengths of the arrows. The lengths are automatically scalled to avoifd overlap. You can control the scaling, if you do not like the default.
If you attach weighted_adjacency, others may be able to run your code.
  1 件のコメント
Matt J
Matt J 2024 年 2 月 29 日
You can also set ShowArrowHead=off to have just lines instead of arrows

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by