ggforce 包包含可应用于 ggraph 网络的 geom_mark_x() geom。 geom_mark_hull() 看起来最接近你的例子。
例如:
gr <- as_tbl_graph(highschool) |>
mutate(
feat1 = sample(LETTERS[1:3], n(), replace = TRUE),
feat2 = sample(LETTERS[1:8], n(), replace = TRUE)
) |>
mutate_at(vars(feat1, feat2), as.factor)
ggraph(gr, layout='kk', circular=F) + geom_mark_hull(aes(x,y,fill=feat1)) + geom_node_point() + geom_node_text(aes(label=name)) + geom_edge_link()
填充美学决定了每个节点的颜色!