创建并绘制图

创建表示某个城市中网格化街道和交叉点的图。为边添加权重,使主干道和横穿街道在图中以不同的方式显示。使用与边权重成比例的边线宽绘图。

s = [1 1 2 2 3 4 4 5 5 6 7 7 8 8 9 10 11];

t = [2 4 3 5 6 5 7 6 8 9 8 10 9 11 12 11 12];

weights = [1 5 1 5 5 1 5 1 5 5 1 5 1 5 5 1 1];

G = graph(s,t,weights);

P = plot(G,'LineWidth',G.Edges.Weight);

添加节点标签

对于节点数不超过 100 个的图,MATLAB® 会使用数字节点索引或节点名称自动标记节点(更大的图默认情况下将省略这些标签)。但是,您可以通过调整 GraphPlot 对象 P 的 NodeLabel 属性或使用 labelnode 函数来更改节点标签。因此,即使节点具有名称,也可以使用与这些名称不同的标签。

删除默认的数字节点标签。将一个交叉点标记为 Home,将另一个标记为 Work。

labelnode(P,1:12,'')

labelnode(P,5,'Home')

labelnode(P,12,'Work')

添加边标签

在绘制的图中,边不是自动标记的。您可以通过更改 GraphPlot 对象 P 的 EdgeLabel 属性值或使用 labeledge 函数来添加边标签。

为纽约市的街道添加边标签。边的顺序在图的 G.Edges 表中定义,因此您指定的标签顺序必须遵循该顺序。将边标签直接存储在 G.Edges 表中很方便,这样边名称就位于其他边信息的旁边。

G.Edges

ans=17×2 table

EndNodes Weight

________ ______

1 2 1

1 4 5

2 3 1

2 5 5

3 6 5

4 5 1

4 7 5

5 6 1

5 8 5

6 9 5

7 8 1

7 10 5

8 9 1

8 11 5

9 12 5

10 11 1

下面的示例有 17 条边,但只有 7 个唯一的街道名称。因此,可以在元胞数组中定义街道名称,然后对元胞数组进行索引,以检索每条边需要的街道名称。将变量添加到包含街道名称的 G.Edges 表中。

streets = {'8th Ave' '7th Ave' '6th Ave' '5th Ave' ...

'W 20th St' 'W 21st St' 'W 22nd St'}';

inds = [1 5 1 6 7 2 5 2 6 7 3 5 3 6 7 4 4];

G.Edges.StreetName = streets(inds);

G.Edges

ans=17×3 table

EndNodes Weight StreetName

________ ______ _____________

1 2 1 {'8th Ave' }

1 4 5 {'W 20th St'}

2 3 1 {'8th Ave' }

2 5 5 {'W 21st St'}

3 6 5 {'W 22nd St'}

4 5 1 {'7th Ave' }

4 7 5 {'W 20th St'}

5 6 1 {'7th Ave' }

5 8 5 {'W 21st St'}

6 9 5 {'W 22nd St'}

7 8 1 {'6th Ave' }

7 10 5 {'W 20th St'}

8 9 1 {'6th Ave' }

8 11 5 {'W 21st St'}

9 12 5 {'W 22nd St'}

10 11 1 {'5th Ave' }

更新 EdgeLabel 属性,以引用这些街道名称。

P.EdgeLabel = G.Edges.StreetName;

调整字体属性

图论图中的节点标签和边标签具有各自的属性,它们控制着标签的外观和样式。由于属性是分离的,因此可以对节点标签和边标签使用不同的样式。

对于节点标签,可以调整:

NodeLabel

NodeLabelColor

NodeFontName

NodeFontSize

NodeFontWeight

NodeFontAngle

对于边标签,可以调整:

EdgeLabel

EdgeLabelColor

EdgeFontName

EdgeFontSize

EdgeFontWeight

EdgeFontAngle

使用这些属性,可以调整此示例中纽约市街道使用的字体:

更改 NodeFontSize 和 NodeLabelColor,使交叉点标签的字体为 12 磅,颜色为红色。

更改 EdgeFontWeight、EdgeFontAngle 和 EdgeFontSize,为一个方向的街道使用较大的粗体字体,为另一个方向的街道使用较小的斜体字体。

更改 EdgeFontName,使用 Times New Roman 作为边标签。

可以使用 highlight 函数更改图边子集的图属性。创建逻辑索引 isAvenue,对于包含单词 'Ave' 的边标签,逻辑索引的值为 true。使用此逻辑向量作为 highlight 的输入,以一种方式标记所有主干道,以另一种方式标记所有非主干道。

P.NodeFontSize = 12;

P.NodeLabelColor = 'r';

isAvenue = contains(P.EdgeLabel, 'Ave');

highlight(P, 'Edges', isAvenue, 'EdgeFontAngle', 'italic', 'EdgeFontSize', 7);

highlight(P, 'Edges', ~isAvenue, 'EdgeFontWeight', 'bold', 'EdgeFontSize', 10);

P.EdgeFontName = 'Times New Roman';

突出显示边

找到 Home 和 Work 节点之间的最短路线,并检查哪些街道在该路线上。以红色突出显示该路线上的节点和边,并删除不在该路线上的所有边的边标签。

[path,d,pathEdges] = shortestpath(G,5,12)

path = 1×4

5 6 9 12

d = 11

pathEdges = 1×3

8 10 15

G.Edges.StreetName(pathEdges,:)

ans = 3x1 cell

{'7th Ave' }

{'W 22nd St'}

{'W 22nd St'}

highlight(P,'Edges',pathEdges,'EdgeColor','r')

highlight(P,path,'NodeColor','r')

labeledge(P, setdiff(1:numedges(G), pathEdges), '')

matlab怎么标记节点,为图节点和边添加标签相关推荐

  1. matlab数据游标属性设置,将节点属性添加到图论图数据提示

    绘制具有数据提示的 GraphPlot 对象 创建随机有向图的 GraphPlot 图对象.将额外的节点属性 wifi 添加到该图. rng default G = digraph(sprandn(2 ...

  2. matlab 加节点,添加图节点名称、边权重和其他属性

    创建图 创建一个有向图.s 和 t 中的对应元素用于定义图中每条边的源节点和目标节点. s = [1 1 2 2 3]; t = [2 4 3 4 4]; G = digraph(s,t) G = d ...

  3. matlab节点连通率,利用MATLAB仿真节点个数和节点通信半径与网络连通率的关系

    一.目的 ①在不同节点个数的情况下,用Matlab拟合出连通率与通信半径的关系曲线. ②在不同节点通信半径的情况下,用Matlab拟合出连通率与节点个数的关系曲线. 二.方法描述 在1x1的单位矩形中 ...

  4. Neo4j ① <图论>图,节点,关系,属性<知识图谱和图库>图谱,图库,优势<基础>模块,应用场景,环境搭建,浏览器

    目录 第一部分 图 和 Neo4j 1.1 图论 1.1.1 图论起源 --- 柯尼斯堡(Konigsberg)七桥问题 1.1.2 图 和 节点 1.1.3 节点关系表达 1.1.4 属性图模型规则 ...

  5. python绘制时间节点事件图_在节点上绘制带有时间标签的图形

    我有一个(有向无环)图,这样每个节点都有一个离散的时间戳,也就是说,每个节点都有一个数字:1,2,3,4...在 图形可能有多个组件,并且时间戳随着图形的方向而增加.在 我把图作为netowrkx对象 ...

  6. python绘制时间节点事件图

    文章目录 前言 例子 封装 更新-插图 前言 偶然在官网发现了一个时间节点事件图便学习了一下,横轴为时间列表,纵轴为相应时间的文本内容,可以展示各个时间节点的一些事件.虽然和前端画的没法比,但封装好用 ...

  7. 举个栗子~Tableau 技巧(237):用多节点瀑布图分阶段查看数据

    瀑布图(下图)既能反映数据的多少,又能直观的反映出数据的增减变化.早期的栗子,我们分享过 瀑布图 的实现方法. 如果将瀑布图用在一些项目进度分析中,要阶段性查看当前的数据情况,就得在瀑布图中增加一些节 ...

  8. pytorch 训练过程acc_【图节点分类】10分钟就学会的图节点分类教程,基于pytorch和dgl...

    图神经网络中最流行和广泛采用的任务之一就是节点分类,其中训练集/验证集/测试集中的每个节点从一组预定义的类别中分配一个真实类别. 为了对节点进行分类,图神经网络利用节点自身的特征,以及相邻节点和边的特 ...

  9. Cytoscape制作带bar图和pie图节点的网络图

    采用cytoscape制作带bar图和pie图节点的网络图 作者:中科院微生物所 陈亮博士 本教程旨在告诉大家如何使用cytoscape根据Node信息表格制作带有barplot信息节点的网络图.以安 ...

最新文章

  1. IOS上路_07-简单示例-电子书
  2. 10年老电脑如何提速_电脑越用越卡?如何简单升级,让你的旧笔记本瞬间提速...
  3. 能设值多个rowkey吗_顶楼送了露台,悄悄搭建阳光房,偏偏我家露台多个帽子,能拆吗?...
  4. python在哪里画柱形图_Python笔记:用pyecharts绘制柱形图
  5. python设置字符编码_python字符编码问题一则
  6. USB Storage启动EBox4300
  7. android activitygroup tab,android 之用ActivityGroup 实现Tab分页
  8. 应用程序无法启动,因为应用程序的并行配置不正确 解决方案
  9. vue实现下载excel模板、导入excel文件、导出excel文件
  10. java 三维数组 魔方_三维数组的横向/纵向输出
  11. 超漂亮的网页图文排版
  12. 组原4_指令偏移寻址
  13. office 365 excel 遇到问题 需要修复
  14. 重要!SpringBoot一个非常蛋疼的无法启动的问题解决
  15. 详解网络爬虫:网络爬虫是干什么的?有哪些应用场景?
  16. 从“吉德林法则”看错题本的正确整理方法
  17. 良品铺子、三只松鼠、百草味如何打造超级产品掠夺休闲零食行业
  18. PHP 根据QQ号获取QQ头像和昵称
  19. C# SuperSocket 手把手教你入门 傻瓜教程---1(服务器单向接收客户端发送数据)
  20. 滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(12月17日)...

热门文章

  1. 齐次Markov链的遍历性判定
  2. 电脑投屏到电视android,电脑怎么投屏到电视?看完这篇文章你就懂了
  3. 双球坐标系_坐标系为啥有多种,笛卡尔坐标系、柱坐标系、球坐标系都有啥区别...
  4. 微信QQ域名防封防红防屏蔽系统源码
  5. insmod: error inserting 'xxx.ko': -1 Invalid module format
  6. 使用a标签时不用href=““调转页面
  7. 服务器能当电脑用吗?与普通电脑有何区别?
  8. spring security 3.1中条用js方法登陆后无法回调
  9. 王者的荣耀--Monza后记
  10. 2016码农谷全国大学生程序设计邀请赛(测试赛)