主要内容

图形绘制和定制

这个示例展示了如何绘制图形,然后自定义显示以向图形节点和边添加标签或高亮显示。

图绘图对象

使用情节函数图有向图对象。默认情况下,情节检查图形的大小和类型,以确定使用哪种布局。生成的图形窗口不包含坐标轴标记。但是,如果您指定(x, y)节点的坐标XDataYData,或ZData名称-值对,图中包含坐标轴刻度。

节点标签会自动包含在包含100个或更少节点的图中。如果可用,节点标签使用节点名;否则,标签是数字节点索引。

例如,使用buckyball邻接矩阵创建一个图,然后使用所有默认选项绘制这个图。如果你叫情节并指定输出参数,然后函数返回一个句柄GraphPlot对象。随后,您可以使用该对象来调整绘图的属性。例如,您可以更改边缘的颜色或样式、节点的大小和颜色等等。

图G =(巴基);p =情节(G)

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

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 =“红色”

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

确定边缘的线宽。

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)

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

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的节点坐标。或者,您可以使用XDataYData,ZData的属性GraphPlot对象。

不要使用默认的2d布局方法,使用布局指定“force3”布局,这是一个三维的力定向布局。

布局(p,“force3”)视图(3)

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

成比例的节点着色

根据度为图节点着色。在这个图中,所有内部节点的最大度都是4,沿着图边界的节点的最大度是3,角节点的最小度是2。将节点着色数据存储为变量NodeColorsG.Nodes

G.Nodes.NodeColors =学位(G);p.NodeCData = G.Nodes.NodeColors;colorbar

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

边线的宽度和重量

给图边添加一些随机整数权值,然后绘制这些边,使它们的线宽与权值成比例。由于边线宽度大约大于7开始变得笨重,调整线宽,使权重最大的边线宽度为7。将边宽数据存储为变量LWidthsG.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;

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

提取子图

的右上角提取并绘制G作为子图,以便更容易阅读图上的细节。新的图,H,继承了NodeColorsLWidths变量G,这样就可以简单地重新创建前面的自定义情节。但是,其中的节点H重新编号以说明图中新的节点数目。

H =子图(G,[1:31 36:41]);p1 =情节(H,“NodeCData”H.Nodes.NodeColors,“线宽”, H.Edges.LWidths);colorbar

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

标记节点和边

使用labeledge标记宽度大于的边6的标签,“大”.的labelnode函数以类似的方式对节点进行标记。

labeledge (p1,找到(H.Edges。LWidths > 6),“大”

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

突出最短路径

求子图中节点11到节点37之间的最短路径,H.用红色高亮此路径的边缘,并增加路径上的结束节点的大小。

路径= shortestpath (37) H, 11日
路径=1×1011 12 17 18 19 24 25 30 36 37
突出(p1, 37[11])突出(p1,路径,“EdgeColor”“r”

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

删除节点标签和颜色栏,并将所有节点设置为黑色。

p1。NodeLabel = {};colorbarp1。NodeColor =“黑”

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

找到另一条忽略边权值的最短路径。用绿色标出这条路径。

37 path2 = shortestpath (H, 11日,“方法”“减重”
path2 =1×1011 12 13 14 15 20 25 30 31 37
突出(p1, path2,“EdgeColor”‘g’

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

策划大型图表

创建具有数十万甚至数百万节点和/或边的图是很常见的。由于这个原因,情节对大型图的处理略有不同,以保持可读性和性能。的情节函数在处理超过100个节点的图时进行这些调整:

  1. 默认的图形布局方法总是“子”

  2. 节点不再自动标记。

  3. MarkerSize属性设置为2.(较小的图形的标记大小为4).

  4. ArrowSize设有向图的性质为4.(较小的有向图使用的箭头大小为7).

另请参阅

|||

相关的话题