R语言中调整ggraph绘图节点顺序 - 如何调整mygraph节点的先后顺序

使用reorder()函数来调整节点的先后顺序,将需要调整先后顺序的节点的名称按照需要的顺序排列,然后将其传递给reorder()函数,最后重新绘图即可。

例如,如果想要将第二层节点中的'boss2'排在'boss1'前面,可以按照以下方式调整节点的顺序:

# 将第二层节点按照需要的顺序排列
level2_order <- c('boss2', 'boss1')

# 使用reorder()函数调整节点的先后顺序
mygraph <- reorder(mygraph, c(1, match(level2_order, V(mygraph)$name), 2))

# 重新绘图
ggraph(mygraph, layout = 'dendrogram', circular = FALSE) + 
  geom_edge_link() + 
  geom_node_point() + 
  geom_node_text(aes(label = name), nudge_y = -0.05) + 
  theme_void()

完整代码如下:

# libraries
library(ggraph)
library(igraph)
library(tidyverse)
library(dendextend)
library(colormap)
library(kableExtra)

options(knitr.table.format = 'html')

# create a data frame 
data=data.frame(
  level1='CEO',
  level2=c( rep('boss1',4), rep('boss2',4)),
  level3=paste0('mister_', letters[1:8])
)

# transform it to a edge list!
edges_level1_2 = data %>% select(level1, level2) %>% unique %>% rename(from=level1, to=level2)
edges_level2_3 = data %>% select(level2, level3) %>% unique %>% rename(from=level2, to=level3)
edge_list=rbind(edges_level1_2, edges_level2_3)

# Now we can plot that
mygraph <- graph_from_data_frame(edge_list)

# 将第二层节点按照需要的顺序排列
level2_order <- c('boss2', 'boss1')

# 使用reorder()函数调整节点的先后顺序
mygraph <- reorder(mygraph, c(1, match(level2_order, V(mygraph)$name), 2))

# 绘图
ggraph(mygraph, layout = 'dendrogram', circular = FALSE) + 
  geom_edge_link() + 
  geom_node_point() + 
  geom_node_text(aes(label = name), nudge_y = -0.05) + 
  theme_void()
R语言中调整ggraph绘图节点顺序 - 如何调整mygraph节点的先后顺序

原文地址: https://www.cveoy.top/t/topic/l6Yi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录