我有一个手动创建的字形如下所示.我已经创建了一个标记为从1到4的顶点属性.当我创建图形时,我希望根据这些顶点属性来排列或布局顶点.因此,从本质上讲,具有"RANK"标签"1"的前4个顶点将位于图形的顶部,然后具有"RANK"标签"2"的单个顶点将位于具有"RANK"标签"1"的4个顶点的下方,依此类推.布局中是否有参数或方法根据另一列来指定顶点的位置?

library(tidyverse)
library(igraph)

g <- make_graph(~ Database+"Sierra Nevada":Panama:Brazil:Pennsylvania:Genetics:
                  "Ecophysiology & Environmental Data":eDNA:AMPs:Microbiome:"Occupancy & Abundance":Outreach:
                  Modeling:Mucosome,
                
                "Sierra Nevada"+ Genetics:"Ecophysiology & Environmental Data":eDNA:AMPs:Microbiome:
                  "Occupancy & Abundance":Outreach:Modeling:Mucosome:Database,
                
                Panama+ Genetics:"Ecophysiology & Environmental Data":eDNA:AMPs:Microbiome:
                  "Occupancy & Abundance":Outreach:Modeling:Mucosome:Database,
                
                Pennsylvania+ Genetics:"Ecophysiology & Environmental Data":eDNA:AMPs:Microbiome:
                  "Occupancy & Abundance":Outreach:Modeling:Mucosome:Database,
                
                Brazil+ Genetics:"Ecophysiology & Environmental Data":eDNA:AMPs:Microbiome:
                  "Occupancy & Abundance":Outreach:Modeling:Mucosome:Database,
                
                Genetics+ "Sierra Nevada":Panama:Brazil:Pennsylvania:Database,
                "Ecophysiology & Environmental Data"- "Sierra Nevada":Panama:Brazil:Pennsylvania:Database,
                
                eDNA+ "Sierra Nevada":Panama:Brazil:Pennsylvania:Database,
                
                AMPs+ "Sierra Nevada":Panama:Brazil:Pennsylvania:Database,
                
                Microbiome+ "Sierra Nevada":Panama:Brazil:Pennsylvania:Database,
                "Occupancy & Abundance"- "Sierra Nevada":Panama:Brazil:Pennsylvania:Database,
                
                Outreach+ "Ecophysiology & Environmental Data":AMPs:Microbiome:Mucosome:Database,
                
                Modeling+ "Sierra Nevada":Panama:Brazil:Pennsylvania:Genetics:
                  "Ecophysiology & Environmental Data":eDNA:AMPs:Microbiome:"Occupancy & Abundance":
                  Modeling:Mucosome:Database,
                
                Mucosome+ "Sierra Nevada":Panama:Brazil:Pennsylvania:Database) %>% 
  reverse_edges() %>% 
  set_vertex_attr("rank", value = c(2, 1, 1, 1, 1, 3, 3, 3, 3, 3, 3, 4, 4, 3))



plot.igraph(g, 
            layout = g$rank , 
            main = "Network",
            edge.arrow.size = 0.3,
            vertex.label.cex = 0.7, 
            edge.curved = T,
            vertex.color=as.factor(V(g)$rank))


推荐答案

有各种布局功能可用于影响绘图的布局.layout_with_sugiyama()会将 node 放入不同的层:

plot(g, 
     main = "Network",
     edge.arrow.size = 0.3,
     vertex.label.cex = 0.7, 
     edge.curved = TRUE,
     vertex.color=as.factor(V(g)$rank),
     layout = layout_with_sugiyama(g, layers = V(g)$rank))

enter image description here

然而,我没有设法避免顶层 node 的重叠.

R相关问答推荐

通过绘图 Select 线串几何体并为其着色

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

更改绘图上的x轴断点,而不影响风险?

x[[1]]中的错误:脚注越界

无法将传奇添加到cowplot多情节中

从开始时间和结束时间导出时间

Rplotly中的Sankey Diagram:意外连接&

如何在一次运行中使用count进行多列计数

可以替代与NSE一起使用的‘any_of()’吗?

在R中创建连续的期间

从R中发出的咕噜声中的BUG?

扩展R中包含列表的数据框

优化从每个面的栅格中提取值

如何删除R中除数字元素以外的所有元素

如何在使用Alpha时让geom_curve在箭头中显示恒定透明度

抽样变换-REXP与RWEIBUR

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

如何在shiny 的应用程序 map 视图宣传单中可视化单点

在shiny 表格中输入的文本在第一次后未更新

R中从因数到数字的转换