How can I Plot eigenvectors of a graph on the graph as bars coming out of vertices?
15 views (last 30 days)
Show older comments
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
0 Comments
Accepted Answer
William Rose
on 28 Feb 2024
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 Comment
More Answers (0)
See Also
Categories
Find more on Graph and Network Algorithms in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!