这个示例展示了如何在图节点和边上添加和自定义标签。
创建一个图表,代表了一个城市中的网格街道和交叉口。将重量加入边缘,使主途径和交叉街道在绘图中出现不同。将图形与边缘重量成比例的边缘线宽绘制。
S = [1 1 2 2 3 4 4 5 5 6 7 7 8 8 9 10 11];T = [2 4 3 5 6 5 7 6 8 9 8 10 9 11 12 11 12];重量= [1 5 1 5 5 1 5 1 5 5 1 5 1 5 5 1 1];g =图(s,t,重量);p = plot(g,'行宽',g.edges.weight);
对于具有100个或更少节点的图形,Matlab®使用数字节点指数或节点名称(默认情况下省略这些标签)自动标记节点。但是,您可以通过调整节点标签来调整NodeLabel
财产的graphplot.
目的P.
或者使用LabelNode.
功能。因此,即使节点具有名称,您也可以使用与名称不同的标签。
删除默认的数字节点标签。将其中一个十字路口标记为家
和另一个工作
。
LabelNode(P,1:12,'') labelnode (P, 5,“回家”) labelnode (P, 12日'工作')
标绘图中的边是不是自动标记。属性的值可以添加边缘标签Edgelabel.
财产的graphplot.
目的P.
或者使用labeledge
功能。
为纽约市的街道添加边缘标签。边的顺序定义在G.Edges.
表,因此指定的标签顺序必须符合该顺序。将边缘标签直接存储在中是很方便的G.Edges.
表,使边缘名称在另一个边缘信息旁边的位置。
G.Edges.
ans =.17×2表Endnode重量________ ______1 2 1 1 4 5 2 3 1 2 5 5 3 6 5 4 5 11 4 7 5 5 6 11 5 8 5 6 9 5 7 8 11 7 10 5 8 9 1 8 11 5 9 12 12 5 1011 1⋮
本例有17条边,但只有7条唯一的街道名。因此,在单元格数组中定义街道名称,然后在单元格数组中建立索引以检索每条边所需的街道名称是有意义的。将变量添加到G.Edges.
包含街头名称的表。
街道= {'8th'“第七大街”'第6个'''5th've'......“W 20圣”'w 21st st''w 22nd st'}'Inds = [1 5 1 6 7 2 5 2 6 7 3 5 3 6 7 4 4];g.edges.streetname =街道(Inds);G.Edges.
ans =.17×3表Endnodes weight Streetname ________ ______ _____________ 1 2 1 {'8th Ave'} 2 3 1 {'第8 Ave'} 2 5 5 5 {'w 21st st'} 3 6 5 {'w22nd st'} 4 5 1 {'第7天'} 4 7 5 {'第7天'} 5 8 5 {'w 21st st'} 6 9 5 {'w 22 nd st'} 7 8 1 {'6th ave'} 7 10 5 {'6th ave'} 8 11 5 {'w 21st st'} 9 12 5 {'w 22nd st'}10 11 1 {'5th ave'}⋮
更新Edgelabel.
属性参考这些街道名称。
p.edgelabel = g.edges.streetname;
图中的节点和边标签有它们自己的属性,这些属性控制标签的外观和样式。由于属性是解耦的,所以可以对节点标签和边缘标签使用不同的样式。
为了节点标签,您可以调整:
NodeLabel
Nodelabelcolor
nodefontname.
NodeFontSize
nodefontweight
NodeFontAngle
为了边缘标签,您可以调整:
Edgelabel.
Edgelabelcolor.
edgefontname.
EdgeFontSize
edgefontweight.
EdgeFontAngle
在这个例子中,使用这些属性来调整纽约市街道的字体:
改变NodeFontSize
和Nodelabelcolor
因此交叉点标签为12磅。字体和红色。
改变edgefontweight.
那EdgeFontAngle
,EdgeFontSize
在一个方向上使用较大,粗体的街道和另一个方向的街道的较小斜体字体。
改变edgefontname.
使用时间新罗马的边缘标签。
你可以使用突出
函数更改图边子集的图属性。创建逻辑索引伊萨维岳
那是真正的
用于包含单词的边缘标签'ave'
。使用此逻辑向量作为输入突出
比如,用一种方式标记所有的大道,用另一种方式标记所有的非大道。
P.NodeFontSize = 12;P.NodeLabelColor ='r';Isavenue =包含(P.EdgeLabel,'ave');亮点(p,'边缘'isAvenue,“EdgeFontAngle”那'斜体'那'edgefontsize',7);亮点(p,'边缘'~ isAvenue,'edgefontweight'那'胆大'那'edgefontsize',10);p.edergefontname =.'英语字体格式一种';
找到家庭和工作节点之间的最短路径,并检查路径上的街道。在红色的路径上突出显示节点和边缘,并将边缘标签删除为路径上的所有边缘。
[路径,d,pathedges] = shortestpath(g,5,12)
路径=1×45 6 9 12
d = 11
pathEdges =1×3.8 10 15.
g.edges.streetname(pathedges,:)
ans =.3 x1细胞{'第7街'}{'W 22街'}{'W 22街'}
亮点(p,'边缘',途径,'Edgecolor'那'r')突出(P,路径,'nodecolor'那'r')LabelEdge(P,SetDiff(1:NumEdges(g),overedges),'')