根据“排名”顶点属性调整 igraph 布局

问题描述 投票:0回答:1

我手动创建了一个 igraph,如下所示。我创建了一个标记为“等级”为 1 到 4 的顶点属性。当我创建图形时,我希望根据这些顶点属性来排列或布局顶点。因此,本质上,“等级”标签为“1”的前 4 个顶点将位于图的顶部,然后“等级”标签为“2”的单个顶点将位于“等级”标签为“2”的 4 个顶点下方。标签“1”等。布局中是否有参数或方法可以根据另一列来指示顶点的位置?


if (!require(librarian)){
  install.packages("librarian")
  library(librarian)
}

librarian::shelf(tidyverse, here, 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, 
            #vertex.shape="none",
            edge.curved = T,
            vertex.color=as.factor(V(g)$rank))


r igraph
1个回答
0
投票

有多种布局函数可用于影响绘图的布局。

layout_with_sugiyama()
将节点放入不同的层中:

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))

但是,我没有设法避免顶层节点的重叠。

© www.soinside.com 2019 - 2024. All rights reserved.