多语言展示
当前在线:616今日阅读:19今日分享:20

MATLAB怎么绘制图节点和边及自定义加权图

MATLAB绘图功能是很丰富的,提供了许多丰富的作图函数帮助我们绘制高级图形,当我们需要绘制带边的节点图、加权图、有向图该怎么绘制和自定义呢,下面分享给大家MATLAB绘制这些高级图的方法、步骤,希望能够帮助大家。
工具/原料
1

MATLAB

2

MATLAB绘制带边的节点图、加权图、有向图

方法/步骤
1

第一步:plot函数可以绘制带节点和边的图,首先我们小试牛刀,使用plot函数绘制一个稀疏邻接矩阵图,MATLAB代码如下:a=8;b= delsq(numgrid('L',a+3));c= graph(b,'OmitSelfLoops')plot(c)其中,a,b,c是创建一个稀疏邻接矩阵。

2

第二步:我们将绘制稀疏邻接矩阵图的代码复制到MATLAB命令窗口中,然后运行即可,plot()函数即可将我们创建好的稀疏邻接矩阵绘制成带节点的边的图,运行结果如下图所示。

3

第三步:上面这个图看起来是一个曲面的,立体感不强,下面我们使用行设定符来绘制一个足球形状的点边球图,MATLAB代码如下:G = graph(bucky);plot(G,'-.b','NodeLabel',{})其中,在plot函数中可以自定义点形状,大小,边连接线,颜色,标签等。

4

第四步:我们将此绘制点边球图的代码复制到MATLAB命令窗口中并运行,即可成功绘制出一个蓝色点球图,如下图所示。

5

第五步:上面介绍了点边图的绘制,下面介绍绘制带点有方向箭头的有向图,绘制有向图需要定义点和方向及边缘,我们需使用digraph()函数,addedge()函数和plot函数,使用force布局,绘制有向图的MATLAB代码如下:a= digraph(1,3:8);a= addedge(a,3,9:18);a= addedge(a,18,19:24)plot(a,'Layout','force')其中,我们在addedge函数中增加节点和边,a后面第一个数是中心节点,第二个数和第三个数定义向量终点及支路名称。

6

第六步:将此绘制有向图的代码复制到MATLAB命令窗口中,然后运行即可成功绘制一个多节点多支路星状有向图,如下图所示。

7

第七步:我们来绘制加权图并进行自定义,我们在MATLAB命令窗口中输入如下代码并运行即可绘制一个加权图,得出的加权图绘制结果如下图所示。a1= [1 1 1 1 1 2 2 7 7 9 3 3 1 4 10 8 4 5 6 8];b1= [2 3 4 5 7 6 7 5 9 6 6 10 10 10 11 11 8 8 11 9];weights = [1 1 1 1 3 3 2 4 1 6 2 8 8 9 3 2 10 12 15 16];c1= graph(a1,b1,weights)a= [0 0.5 -0.5 -0.5 0.5 0 1.5 0 2 -1.5 -2];b= [0 0.5 0.5 -0.5 -0.5 2 0 -2 0 0 0];c= [5 3 3 3 3 0 1 0 0 1 0];plot(c1,'XData',a,'YData',b,'ZData',c,'EdgeLabel',c1.Edges.Weight)

8

第八步:关于加权图,我们还可以使用view(3)函数来选择观察的角度,使用LWidths = 4*c1.Edges.Weight/max(c1.Edges.Weight);来以权重调整各条边的线宽,这里最大线宽为4,还可以使用eLabels = {'a' 'b' 'c' 'b' 'c' 'a' 'c' 'a' 'b' 'c' 'b' 'a'}; nLabels = {'{0}','{a}','{b}','{c}','{a,b}','{a,c}','{b,c}','{a,b,c}'};来给边和节点添加标签,使用p.Marker = 's'; p.NodeColor = 'g';可以给节点添加颜色和标记。部分程序运行结果如下图所示。

注意事项
1

在绘制加权图的时候需要注意检查边数和连接点,注意重复并进行修改。

2

在绘制加权图的时候可以使用p.MarkerSize =5;来增加节点的大小,使用p.LineStyle = '_';来改变线形,使用p.XData 、p.YData 改变x、y坐标。

推荐信息