如何在Matlab中绘制连通性/邻接矩阵?

时间:2013-05-01 08:54:39

标签: matlab graph plot adjacency-matrix

我想在MATLAB中绘制网络(电网)的结构图。我有一个包含每个分支的to-from节点的列表。我没有节点坐标,每次模拟都会改变系统拓扑结构。

我还需要能够为各种线路/节点分配不同的颜色,以显示电压问题或过载等,类似于我使用传记(下面的代码)所做的。

BIOGRAPH功能几乎是完美的。缺点是线条总是出现在祖先块的“底部”,并进入后代的“顶部”。由于祖先总是显示在其后代之上,因此图形有时非常混乱(对于大型系统)。

我尝试将传记的属性'LayoutType'从默认的“层级”更改为“径向”和“均衡”,但这会产生更糟糕的结果。

我问的可能吗?它不需要是一个完美的解决方案,任何改进都会很棒。

这是我现在使用的代码:

%% Plot biograph
Sys = sparse(from,to,1,s,s);  

SysTri = tril(Sys + Sys'); 
bg = biograph(SysTri,[],'ShowArrows','off','ShowWeights','off');
h = view(bg);  

 %% Color faulted line:
set(h.nodes(newFaultNodes),'Color',[1 0.4 0.4]);
fowEdges = getedgesbynodeid(h,get(h.Nodes(newFaultNodes),'ID'));
revEdges = getedgesbynodeid(h,get(h.Nodes(fliplr(newFaultNodes)),'ID'));
edges = [fowEdges;revEdges];
set(edges,'LineColor',[1 0 0])
set(edges,'LineWidth',2)

1 个答案:

答案 0 :(得分:0)

试试matlab-bgl。它链接到Boost Graph库,并包含一些有用的布局算法。然后,您可以使用gplot进行可视化。

gplot(A, fruchterman_reingold_force_directed_layout(A));