主要内容

图形绘制和定制

此示例显示如何打印图形,然后自定义显示以向图形节点和边添加标签或高亮显示。

图绘图对象

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

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

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

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

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

p=带属性的GraphPlot:NodeColor:[0.4470 0.7410]标记化:4标记:“o”EdgeColor:[0.4470 0.7410]线宽:0.5000线型:“-”NodeLabel:{1x60 cell}EdgeLabel:{}扩展数据:[1x60 double]YData:[1x60 double]ZData:[1x60 double]显示所有属性

在你掌握了控制权之后GraphPlot对象,使用点索引访问或更改属性值。有关可以调整的属性的完整列表,请参见GraphPlot属性

改变节点颜色“红色”

p.NodeColor =“红色”

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

确定边的线宽。

p、 线宽
ans = 0.5000

创建并绘制图形

创建并绘制一个图形,表示一个L形膜,该膜由一个有12个节点的正方形网格构成。使用指定一个输出参数情节将句柄返回GraphPlot对象

n = 12;一个= delsq (numgrid (“我,n));G=图(A,“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]显示所有属性

改变图节点布局

使用布局函数更改绘图中图形节点的布局。不同的布局选项会自动计算绘图的节点坐标。或者,您可以使用XDataYDataZData的属性GraphPlot对象

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

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

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

比例节点着色

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

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

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

边线的宽度和重量

向图形边添加一些随机整数权重,然后绘制边,使其线宽与其权重成比例。由于边线宽度大约大于7开始变得麻烦,请缩放边线宽度,使权重最大的边线的线宽为7。将此边宽度数据存储为变量LWidthsG.边缘

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,继承了节点颜色LWidths变量G,这样就可以简单地重新创建前面的自定义情节。但是,其中的节点H重新编号以说明图中新的节点数目。

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

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

标记节点和边

使用标签标记宽度大于的边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,[11 37])突出显示(p1,路径,“EdgeColor”“r”

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

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

p1.NodeLabel={};颜色条p1。NodeColor =“黑”

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

查找忽略边权重的其他最短路径。以绿色突出显示此路径。

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

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

策划大型图表

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

  1. 默认的图形布局方法始终为“子空间”

  2. 节点不再自动标记。

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

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

另请参阅

|||

相关话题