如何绘制网络在Matlab?如何绘制网络在Matlab?(How to draw networks

2019-05-12 10:17发布

我有一个矩阵A的尺寸的Matlab的mx2包含每行中的两个节点的示出了网络中的直接链接的标签,例如:

如果网络具有4节点的矩阵A可以是A=[1 2; 1 3; 2 1; 2 4; 3 2; 4 1; 4 2] A=[1 2; 1 3; 2 1; 2 4; 3 2; 4 1; 4 2] A=[1 2; 1 3; 2 1; 2 4; 3 2; 4 1; 4 2]其中第一行是指有从链路12中,第二行意味着有从链路13

你可以建议我一个快速的方法来区分来源于网络?

Answer 1:

如果你想要的链接,是方向性的,并具有生物信息学工具箱,你可以创建一个biograph对象。 这也允许与标识字符串标记的节点,如果你愿意的话,请参阅帮助文件。 如果不是他们会被称为“节点1”,“节点2”,等你需要你的链接列表转换为邻接矩阵- @RTL给accumarray版本,你也可以使用sub2ind:

N = 4;
adj = zeros(N);
adj(sub2ind([N,N], A(:,1),A(:,2))) = 1;

bg = biograph(adj);  % make biograph object
dolayout(bg);   % automatically calculate positions for nodes
view(bg); % what it says on the tin


Answer 2:

n = max(A(:)); %// number of nodes
theta = linspace(0,2*pi,n+1); %// the nodes will be on a circle
theta = theta(1:end-1);
x = cos(theta); %// x coordinates of nodes
y = sin(theta); %// y coordinates of nodes
plot(x, y, 'ro') %// plot nodes
hold on
plot(x(A).', y(A).', 'b-') %// plot edges
axis image
axis(1.2*[-1 1 -1 1])
set(gca,'xtick',[],'ytick',[])



Answer 3:

使用内置的替代解决方案gplot功能

adj=accumarray(A,1)
n=size(adj,1); % number of nodes
coord=[cos((1:n).'*(2*pi/n)),sin((1:n).'*(2*pi/n))] % points on a circle for nodes
gplot(adj,coord)

对于大型网络邻接矩阵可以作为稀疏来产生与accumarray(A,1,[],[],0,true)



Answer 4:

MatLab的> R2015b现在有图和网络算法 。

A是你会打电话边列表。

plot(digraph(A(:,1),A(:,2))

将借鉴网络。



Answer 5:

您可能也有兴趣Matgraph,matlab工具箱的图形操作:

http://www.mathworks.com/matlabcentral/fileexchange/19218-matgraph



文章来源: How to draw networks in Matlab?