R语言中调整ggraph绘图节点顺序 - 如何调整mygraph节点的先后顺序
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()
原文地址: https://www.cveoy.top/t/topic/l6Yi 著作权归作者所有。请勿转载和采集!