主要内容

标记图节点和边

这个例子展示了如何在图节点和边上添加和自定义标签。

创建并绘制图表

创建一个表示城市中网格街道和十字路口的图表。在边缘添加权重,这样主干道和交叉街道就会在图中呈现出不同的样子。用边线宽度与边的权重成比例绘制图形。

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 1 1];G =图(s,t,权重);P = plot(G,“线宽”, G.Edges.Weight);

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

添加节点标签

对于具有100个或更少节点的图,MATLAB®自动使用数值节点索引或节点名称标记节点(较大的图默认省略这些标签)。节点标签可以通过调整NodeLabel的属性GraphPlot对象P或者使用labelnode函数。因此,即使节点有名称,也可以使用与名称不同的标签。

删除默认数值节点标签。把其中一个十字路口标记为首页另一个是工作

labelnode (P 1:12) labelnode (P, 5,“回家”) labelnode (P, 12日‘工作’

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

添加边缘标签

在绘图图中的边是自动标记。属性的值可以添加边缘标签EdgeLabel的属性GraphPlot对象P或者使用labeledge函数。

为纽约市的街道添加边缘标签。中定义了边的顺序G.Edges表的图形,所以您指定的标签的顺序必须尊重该顺序。方便将边缘标签直接存储在G.Edges表,这样边名就在其他边信息的旁边。

G.Edges
ans =17×2表EndNodes Weight ________ ______ 12 11 4 5 2 3 12 5 5 3 6 5 4 5 1 4 7 5 5 6 1 5 8 5 6 9 5 7 8 1 7 10 5 8 9 1 8 11 5 9 12 5 10 11 1

这个例子有17条边,但只有7个唯一的街道名称。因此,在单元格数组中定义街道名称,然后索引到单元格数组中以检索每条边所需的街道名称是有意义的。属性中添加一个变量G.Edges包含街道名称的表。

街道= {“第八大街”“第七大街”“第六大街”“第五大道”...“西20街”“西21街”“西22街”} ';Inds = [1 5 1 6 7 2 5 2 6 7 3 3 6 7 4 4];G.Edges.StreetName =街道(inds);G.Edges
ans =17×3表EndNodes重量StreetName  ________ ______ _____________ 1 2 1{第八大街的}1 4 5{“W 20圣”}2 3 1{第八大街的}2 5 5{“W 21 St”}3 6 5{“W 22日圣”}4 5 1{“第七大街”}4 7 5{“W 20圣”}5 6 1{“第七大街”}5 8 5{“W 21 St”}6 9 5{“W 22日圣”}7 8 1{“第六大街”}7 10 5{“W 20圣”}8 9 1{“第六大街”}8 11 5{“W 21 St”}9 12 5{“W 22日圣”}10 11 1{“第五大道”}⋮

更新EdgeLabel属性引用这些街道名称。

P.EdgeLabel = G.Edges.StreetName;

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

调整字体属性

图中的节点标签和边标签有自己的属性,这些属性控制标签的外观和样式。由于属性是解耦的,因此可以为节点标签和边缘标签使用不同的样式。

节点标签,你可以调整:

  • NodeLabel

  • NodeLabelColor

  • NodeFontName

  • NodeFontSize

  • NodeFontWeight

  • NodeFontAngle

边缘标签,你可以调整:

  • EdgeLabel

  • EdgeLabelColor

  • EdgeFontName

  • EdgeFontSize

  • EdgeFontWeight

  • EdgeFontAngle

使用这些属性来调整本例中的New York City Streets字体:

  • 改变NodeFontSize而且NodeLabelColor因此,交叉标签是12pt .字体和红色。

  • 改变EdgeFontWeightEdgeFontAngle,EdgeFontSize在一个方向上使用较大的粗体表示街道,在另一个方向上使用较小的斜体表示街道。

  • 改变EdgeFontName使用Times New Roman作为边缘标签。

您可以使用突出函数更改图边子集的图属性。创建逻辑索引isAvenue这是真正的用于包含单词的边标签“大街”.使用此逻辑向量作为突出用一种方式标记所有大道,用另一种方式标记所有非大道。

P.NodeFontSize = 12;P.NodeLabelColor =“r”;isAvenue = contains(P。EdgeLabel,“大街”);突出(P,“边缘”isAvenue,“EdgeFontAngle”“斜体”“EdgeFontSize”7);突出(P,“边缘”~ isAvenue,“EdgeFontWeight”“大胆”“EdgeFontSize”10);P.EdgeFontName =“Times New Roman”

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

强调边缘

找到Home和Work节点之间的最短路径,并检查路径上有哪些街道。用红色突出显示路径上的节点和边,并删除不在路径上的所有边的边标签。

[path,d,pathEdges] =最短路径(G,5,12)
路径=1×45 6 9 12
D = 11
pathEdges =1×38 10 15
G.Edges.StreetName (pathEdges:)
ans =3 x1细胞{“第七大道”}{“西22街”}{“西22街”}
突出(P,“边缘”pathEdges,“EdgeColor”“r”)突出(P,路径,“NodeColor”“r”) label (P, setdiff(1:numedges(G), pathEdges),

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

另请参阅

相关的话题