我想在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)
答案 0 :(得分:0)
试试matlab-bgl。它链接到Boost Graph库,并包含一些有用的布局算法。然后,您可以使用gplot
进行可视化。
gplot(A, fruchterman_reingold_force_directed_layout(A));