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

8 views (last 30 days)
Defne Odabasi on 28 Feb 2024
Commented: Matt J on 29 Feb 2024
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:
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
%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 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.
Matt J on 29 Feb 2024
You can also set ShowArrowHead=off to have just lines instead of arrows