如何在R语言环形图中仅标记存在连接关系的节点
修改方案
要实现仅标记存在连接关系的节点,你需要先识别出所有参与连接的节点,再调整标签显示逻辑。具体步骤如下:
- 提取原始数据中所有存在连接的节点(即
df里col1和col2的唯一值) - 在图数据处理流程中为节点添加标记属性,判断节点是否属于有连接的集合
- 修改标签渲染逻辑,仅显示有连接节点的名称
修改后的完整代码
library(tidygraph) library(ggraph) # 提取所有存在连接关系的节点 connected_nodes <- unique(c(df$col1, df$col2)) df %>% bind_rows(data.frame(col1 = 1:360, col2 = 1:360)) %>% arrange(col1) %>% as_tbl_graph() %>% activate(nodes) %>% # 添加节点标记:是否属于有连接的节点 mutate(has_connection = as.numeric(name) %in% connected_nodes) %>% activate(edges) %>% mutate(diff = as.character(abs(from - to))) %>% ggraph(layout = "linear", circular = TRUE) + geom_edge_arc(aes(colour = diff), lwd = 1) + ggforce::geom_circle(aes(x0 = 0, y0 = 0, r = 1.024), size = 15, color = '#fff450') + # 仅显示有连接节点的标签 geom_node_text(aes(label = ifelse(has_connection, name, ""), angle = -as.numeric(name) + 90)) + coord_equal() + theme_graph() + theme(plot.background = element_rect(fill = 'black'), legend.position = 'none')
关键改动说明
connected_nodes变量收集了所有在原始连接中出现的节点(包括col1和col2的所有唯一值)- 通过
activate(nodes) %>% mutate(...)为每个节点添加了has_connection属性,标记该节点是否属于有连接的集合 - 调整
geom_node_text的label参数,仅当has_connection为TRUE时显示节点名称
内容的提问来源于stack exchange,提问作者jhone aish
相关产品推荐
相关产品推荐

