的灵感Cleve Moler最新的blog post,你也可以使用gplot
fu绘制给定邻接矩阵和节点坐标的图。
这是一个使用bucky
的示例; MATLAB的一个演示函数部分,它生成一个截断的二十面体图形(看起来像一个足球)。
%# 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))
我们可以借此更进一步,尽量减少边交叉:因为我们是在一个圆形布局的顶点,我们将只使用它的邻接矩阵在这个例子中。那就是我们要重新排列节点,使边缘尽可能接近圆的圆周。
这可以通过发现它的带宽最小化矩阵的对称permutation进行(非零更靠近对角线)
p = symrcm(A);
A = A(p,p);
txt = txt(p);
结果在这种情况下:
其他改进包括用c代替直线(用这种方法可以得到类似于第二个图的更好的图),或者使用不同的颜色来显示顶点和边的聚类(显然你需要做图聚类)。我会离开这些步骤给你:)
可能的重复[如何在MATLAB中将相关矩阵可视化为模态球](http://stackoverflow.com/questions/17038377/how-to-visualize-correlation-matrix- as-a-scheballball-in-matlab) – Shai 2013-06-13 19:05:21