我正在尝试在Matlab中绘制一本传记。我想显示节点的名称和每个边的标签。我正在设置特定边缘的标签。并设置传记的选项以显示边缘的标签,但它仍然没有显示它们。我错过了什么?有没有办法通过列表设置边的名称?或者你必须一个接一个地做?
谢谢。
以下是代码:
cm = sparse([0 1 1 0 0;1 0 0 1 1;1 0 0 0 0;0 0 0 0 1;1 0 1 0 0]);
names = {'E1','E2','E3','E4','E5'};
bg = biograph(cm,names,'LayoutType','radial','ShowTextInNodes','Label');
bg.nodes(1).Shape = 'circle';
bg.nodes(1).Size = [2 2];
bg.nodes(1).color = [.5 .7 1];
bg.edges(1).LineColor =[.5 .7 1];
bg.edges(1).Label = 'labelzz';
bg.edges(1).Description = 'Descriptionzz';
get(bg);
get(bg.edges(1));
gObj = view(bg);
这就是结果:
Biograph object with 5 nodes and 9 edges.
ID: ''
Label: ''
Description: ''
LayoutType: 'radial'
LayoutScale: 1
Scale: 1
NodeAutoSize: 'on'
ShowTextInNodes: 'label'
EdgeType: 'curved'
EdgeTextColor: [0 0 0]
ShowArrows: 'on'
ArrowSize: 8
ShowWeights: 'off'
EdgeFontSize: 8
NodeCallbacks: @(node)inspect(node)
EdgeCallbacks: @(edge)inspect(edge)
CustomNodeDrawFcn: []
Nodes: [5x1 biograph.node]
Edges: [9x1 biograph.edge]
ID: 'E1 -> E2'
Label: 'labelzz'
Description: 'Descriptionzz'
Weight: 1
LineWidth: 0.5000
LineColor: [0.5000 0.7000 1]
UserData: []
图表图片:
答案 0 :(得分:1)
无法显示边缘标签或ID。只能显示边缘权重,将传记属性ShowWeights设置为' on'。
答案 1 :(得分:1)
Matlab中的传记仅支持边缘显示数字权重,但您可以轻松修改代码以显示任意文本。
在文件中: \工具箱\ bioinfo \ bioinfo \ @biograph \ @edge \ hgUpdate.m
替换以下两行
set(h.hgline,'UserData',text(txy(1),txy(2),[' ' num2str(h.Weight) ' '] ,...
和
'String',[' ' num2str(h.Weight) ' '],...
通过
set(h.hgline,'UserData',text(txy(1),txy(2),[' ' h.Label ' '] ,...
和
'String',[' ' h.Label ' '],...
然后只需在边缘的“标签”属性中设置文本。 E.g。
graph = biograph([0 1 ; 1 0], {'node1', 'node2'}, 'ShowWeights', 'on');
graph.Edges(1).Label = 'Edge 1-2';
graph.Edges(2).Label = 'Edge 2-1';
view(graph);