2011-07-12 16 views
0

ユーザからの入力として隣接行列を受け入れ、行列の3D散布図を作成するコードを作成しました。私は、接続されていないノードと、接続されたノード間の引力との間に反発力を割り当てて、それらに作用する正味の力に従ってノードが移動するようにしたい。これは3dでなければなりません。ここ力指向アルゴリズムを使用して隣接行列から3Dプロットを生成するには

+1

...と何が試してみましたか? – abcd

答えて

1

は隣接行列と頂点の座標が与えられると、我々はグラフの3次元散布プロットをどのように示した例である。

%# 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') 

screenshot

Iが他の部分怖いですはるかに関与している、あなたは誰かがあなたを助けようとする前に、あなたがそれにいくつかの努力を置くことを示す必要があります...

関連する問題