You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言环形图中仅标记存在连接关系的节点

修改方案

要实现仅标记存在连接关系的节点,你需要先识别出所有参与连接的节点,再调整标签显示逻辑。具体步骤如下:

  1. 提取原始数据中所有存在连接的节点(即df里col1和col2的唯一值)
  2. 在图数据处理流程中为节点添加标记属性,判断节点是否属于有连接的集合
  3. 修改标签渲染逻辑,仅显示有连接节点的名称

修改后的完整代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:08:31