这个示例展示了如何绘制图形,然后自定义显示以向图形节点和边添加标签或高亮显示。
使用情节
函数图图
和有向图
对象。默认情况下,情节
检查图形的大小和类型,以确定使用哪种布局。生成的图形窗口不包含坐标轴标记。但是,如果您指定(x, y)节点的坐标XData
,YData
,或ZData
名称-值对,图中包含坐标轴刻度。
节点标签会自动包含在包含100个或更少节点的图中。如果可用,节点标签使用节点名;否则,标签是数字节点索引。
例如,使用buckyball邻接矩阵创建一个图,然后使用所有默认选项绘制这个图。如果你叫情节
并指定输出参数,然后函数返回一个句柄GraphPlot
对象。随后,您可以使用该对象来调整绘图的属性。例如,您可以更改边缘的颜色或样式、节点的大小和颜色等等。
图G =(巴基);p =情节(G)
p = GraphPlot with properties: NodeColor: [0 0.4470 0.7410] marksize: 4 Marker: 'o' EdgeColor: [0 0.4470 0.7410] LineWidth: 0.5000 LineStyle: '-' NodeLabel: {1x60 cell} EdgeLabel: {} XData: [1x60 double] YData: [1x60 double] ZData: [1x60 double]显示所有属性
等你有了把手以后GraphPlot
对象,使用点索引访问或更改属性值。有关可以调整的属性的完整列表,请参见GraphPlot属性.
改变NodeColor
来“红色”
.
p.NodeColor =“红色”;
确定边缘的线宽。
p.LineWidth
ans = 0.5000
创建并绘制一个图形,代表一个由12个节点的正方形网格构建的l形膜。指定一个输出参数情节
将句柄返回GraphPlot
对象。
n = 12;一个= delsq (numgrid (“L”, n));图G = (,“omitselfloops”)
G = graph with properties: Edges: [130x2 table] Nodes: [75x0 table]
p =情节(G)
p = GraphPlot with properties: NodeColor: [0 0.4470 0.7410] marksize: 4 Marker: 'o' EdgeColor: [0 0.4470 0.7410] LineWidth: 0.5000 LineStyle: '-' NodeLabel: {1x75 cell} EdgeLabel: {} XData: [1x75 double] YData: [1x75 double] ZData: [1x75 double]显示所有属性
使用布局
函数更改图中图形节点的布局。不同的布局选项会自动计算plot的节点坐标。或者,您可以使用XData
,YData
,ZData
的属性GraphPlot
对象。
不要使用默认的2d布局方法,使用布局
指定“force3”
布局,这是一个三维的力定向布局。
布局(p,“force3”)视图(3)
根据度为图节点着色。在这个图中,所有内部节点的最大度都是4,沿着图边界的节点的最大度是3,角节点的最小度是2。将节点着色数据存储为变量NodeColors
在G.Nodes
.
G.Nodes.NodeColors =学位(G);p.NodeCData = G.Nodes.NodeColors;colorbar
给图边添加一些随机整数权值,然后绘制这些边,使它们的线宽与权值成比例。由于边线宽度大约大于7开始变得笨重,调整线宽,使权重最大的边线宽度为7。将边宽数据存储为变量LWidths
在G.Edges
.
G.Edges.Weight = randi([10 250],130,1);G.Edges.LWidths = 7 * G.Edges.Weight / max (G.Edges.Weight);p.LineWidth = G.Edges.LWidths;
的右上角提取并绘制G
作为子图,以便更容易阅读图上的细节。新的图,H
,继承了NodeColors
和LWidths
变量G
,这样就可以简单地重新创建前面的自定义情节。但是,其中的节点H
重新编号以说明图中新的节点数目。
H =子图(G,[1:31 36:41]);p1 =情节(H,“NodeCData”H.Nodes.NodeColors,“线宽”, H.Edges.LWidths);colorbar
使用labeledge
标记宽度大于的边6
的标签,“大”
.的labelnode
函数以类似的方式对节点进行标记。
labeledge (p1,找到(H.Edges。LWidths > 6),“大”)
求子图中节点11到节点37之间的最短路径,H
.用红色高亮此路径的边缘,并增加路径上的结束节点的大小。
路径= shortestpath (37) H, 11日
路径=1×1011 12 17 18 19 24 25 30 36 37
突出(p1, 37[11])突出(p1,路径,“EdgeColor”,“r”)
删除节点标签和颜色栏,并将所有节点设置为黑色。
p1。NodeLabel = {};colorbar从p1。NodeColor =“黑”;
找到另一条忽略边权值的最短路径。用绿色标出这条路径。
37 path2 = shortestpath (H, 11日,“方法”,“减重”)
path2 =1×1011 12 13 14 15 20 25 30 31 37
突出(p1, path2,“EdgeColor”,‘g’)
创建具有数十万甚至数百万节点和/或边的图是很常见的。由于这个原因,情节
对大型图的处理略有不同,以保持可读性和性能。的情节
函数在处理超过100个节点的图时进行这些调整:
默认的图形布局方法总是“子”
.
节点不再自动标记。
的MarkerSize
属性设置为2
.(较小的图形的标记大小为4
).
的ArrowSize
设有向图的性质为4
.(较小的有向图使用的箭头大小为7
).