主要内容

图形绘制和定制

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

图形绘图对象

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

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

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

G =图形(bucky);p = plot(G)

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

p = GraphPlot with properties: NodeColor: [0 0.4470 0.7410] MarkerSize: 4 Marker: 'o' EdgeColor: [0 0.4470 0.7410] LineWidth: 0.5000 LineStyle: '-' NodeLabel: {1x60 cell} EdgeLabel: {} XData:[0.1033 1.3374 2.2460 1.3509 0.0019 -1.0591 -2.2901…YData:[-1.8039 -1.2709 -2.0484 -3.0776 -2.9916 -0.9642 -1.2170…] ZData:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…显示所有属性

等你掌握了GraphPlot对象,则使用点索引来访问或更改属性值。有关可以调整的属性的完整列表,请参见GraphPlot属性

更改的值NodeColor“红色”

p.NodeColor =“红色”

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

确定边缘的线宽。

p.LineWidth
Ans = 0.5000

创建并绘制图形

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

N = 12;A = delsq(numgrid)“L”, n));G =图(A,“omitselfloops”
G =有属性的图:边:[130x2表]节点:[75x0表]
p = plot(G)

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

p = GraphPlot with properties: NodeColor: [0 0.4470 0.7410] MarkerSize: 4 Marker: 'o' EdgeColor: [0 0.4470 0.7410] LineWidth: 0.5000 LineStyle: '-' NodeLabel: {1x75 cell} EdgeLabel: {} XData:[-2.5225 -2.1251 -1.6498 -1.1759 -0.7827 -2.5017 -2.0929…YData:[-3.5040 -3.5417 -3.5684 -3.5799 -3.5791 -3.5791 -3.0574…]] ZData:[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0…显示所有属性

更改图节点布局

使用布局函数更改图中图形节点的布局。不同的布局选项自动计算出该地块的节点坐标。方法指定自己的节点坐标XDataYData,ZData的属性GraphPlot对象。

与其使用默认的2-D布局方法,不如使用布局指定“force3”布局,这是一个三维力定向布局。

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

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

比例节点着色

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

G. nodes . nodecolors =度(G);p.NodeCData = G.Nodes.NodeColors;colorbar

图中包含一个axes对象。axes对象包含一个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;

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

提取子图

的右上角提取并绘制G作为子图,以便更容易地读取图上的细节。新的图表,H,继承NodeColors而且LWidths变量G,因此重新创建以前的情节自定义非常简单。然而,节点在H重新编号,以考虑图中节点的新数量。

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

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

标记节点和边

使用labeledge标记宽度大于的边6有了标签,“大”.的labelnode函数的工作方式与标记节点类似。

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

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

高亮最短路径

求子图中节点11到节点37之间的最短路径,H.沿着这条路径用红色突出显示边缘,并增加路径上结束节点的大小。

路径=最短路径(H,11,37)
路径=1×1011 12 17 18 19 24 25 30 36 37
Highlight (p1,[11 37]) Highlight (p1,path,“EdgeColor”“r”

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

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

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

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

找一条不考虑边权值的最短路径。用绿色突出显示这条路径。

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

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

绘制大型图形

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

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

  2. 节点不再被自动标记。

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

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

另请参阅

|||

相关的话题

Baidu
map