/ / Como faço para gerar um gráfico 3D a partir de uma matriz de adjacência usando o algoritmo de força direcionada - matlab, matlab-figure

Como faço para gerar um gráfico 3d a partir de uma matriz de adjacência usando o algoritmo de força direcionada - matlab, matlab-figure

Eu criei um código que aceita uma adjacênciamatriz como entrada de um usuário e criar um gráfico de dispersão 3D da matriz. Quero atribuir uma força repulsiva entre os nós não conectados e uma força atrativa entre os nós conectados, de modo que os nós sejam deslocados de acordo com a força resultante atuando sobre eles. Isso tem que ser em 3d.

Respostas:

1 para resposta № 1

Aqui está um exemplo mostrando como, dada uma matriz de adjacência e as coordenadas dos vértices, plotamos uma dispersão 3D do gráfico:

%# sample adjacency matrix and 3D coordinates of points
N = 30;                                      %# number of vertices
[adj,XYZ] = bucky;
adj = full(adj); adj = adj(1:N,1:N);
x = XYZ(1:N,1); y = XYZ(1:N,2); z = XYZ(1:N,3);
labels = cellstr( num2str((1:N)","%02d") );  %"# nodes labels

%# another sample data
%#x = rand(N,1);          %# x-coords of vertices
%#y = rand(N,1);          %# y-coords
%#z = rand(N,1);          %# z-coords
%#adj = rand(N,N)>0.7;    %# adjacency matrix

%# plot graph in 3D
[r c] = find(adj);
p = [r c]";              %"# indices
plot3(x(p), y(p), z(p), "LineWidth",2, "Color",[.4 .4 1], ...
"Marker","o", "MarkerSize",10, ...
"MarkerFaceColor","g", "MarkerEdgeColor","g")
text(x, y, z, labels, ...
"EdgeColor","g", "BackgroundColor",[.7 1 .7], ...
"VerticalAlignment","bottom", "HorizontalAlignment","left")
axis vis3d, box on, view(3)
xlabel("x"), ylabel("y"), zlabel("z")

captura de tela

Eu tenho medo que a outra parte esteja muito mais envolvida, e você teria que mostrar que você colocou algum esforço antes que alguém tente ajudá-lo ...