Inspirado por el último blog post de Cleve Moler, también podría usar el gplot
fu nction para dibujar un gráfico dado una matriz de adyacencia y coordenadas de nodo.
Aquí hay un ejemplo que usa bucky
; una función de demostración de MATLAB que genera el gráfico de un icosaedro truncado (parece una pelota de fútbol). Sólo utilizaremos su matriz de adyacencia para este ejemplo ya que estamos poniendo a cabo los vértices en forma circular:
%# 60-by-60 sparse adjacency matrix
A = bucky();
N = length(A);
%# x/y coordinates of nodes in a circular layout
r = 1;
theta = linspace(0,2*pi,N+1)'; theta(end) = [];
xy = r .* [cos(theta) sin(theta)];
%# labels of nodes
txt = cellstr(num2str((1:N)','%02d'));
%# show nodes and edges
line(xy(:,1), xy(:,2), 'LineStyle','none', ...
'Marker','.', 'MarkerSize',15, 'Color','g')
hold on
gplot(A, xy, 'b-')
axis([-1 1 -1 1]); axis equal off
hold off
%# show node labels
h = text(xy(:,1).*1.05, xy(:,2).*1.05, txt, 'FontSize',8);
set(h, {'Rotation'},num2cell(theta*180/pi))

nos puede llevar esto un paso más allá y tratar de minimizar cruceros de eje . Es decir, queremos reorganizar los nodos para que los bordes estén lo más cerca posible de la circunferencia del círculo.
Esto se puede hacer mediante la búsqueda de una simétrica permutation de la matriz que minimice su ancho de banda (no-ceros están más cerca de la diagonal)

p = symrcm(A);
A = A(p,p);
txt = txt(p);
El resultado en este caso:

Otras mejoras incluyen el reemplazo de líneas rectas con c urdió splines para dibujar los bordes, (de esa manera obtienes un gráfico más bonito similar al que has mostrado), o usando diferentes colores para mostrar los cúmulos de vértices y sus bordes (obviamente, necesitarás hacer un clúster de gráficos). Dejaré esos pasos para ti :)
posible duplicado de [Cómo visualizar la matriz de correlación como schemaball en Matlab] (http://stackoverflow.com/questions/17038377/how-to-visualize-correlation-matrix- as-a-schemaball-in-matlab) – Shai