如何移除ggraph网络图fill/colour图例中的字母"a"?
解决ggraph中geom_node_label图例的字母"a"问题
你碰到的这个情况很常见——geom_node_label的图例默认会显示label的示例文本(也就是那个多余的"a"),但我们不需要把整个图例关掉(毕竟还要保留fill对应的类型区分),只需要覆盖图例里的label属性就能搞定。
这里有两种简单的实现方式:
方法一:用guides()覆盖图例属性
直接在绘图代码里加上guides(fill = guide_legend(override.aes = list(label = ""))),把图例中的label设为空字符串,就能去掉那个"a"了:
library(igraph) library(ggraph) g1 <- make_ring(6) vertex_attr(g1) <- list(name = LETTERS[1:6], type =rep(c("typeA", "typeB", "typeC"), 2)) ggraph(g1) + geom_node_label(aes(label = name, fill = type)) + geom_edge_diagonal() + theme_graph() + guides(fill = guide_legend(override.aes = list(label = "")))
方法二:在scale层设置图例
如果你的fill映射是离散型的(比如示例里的type分类),也可以在scale_fill_discrete()里设置对应的guide参数,效果是一样的:
ggraph(g1) + geom_node_label(aes(label = name, fill = type)) + geom_edge_diagonal() + theme_graph() + scale_fill_discrete(guide = guide_legend(override.aes = list(label = "")))
原理说明
override.aes参数的作用就是覆盖图例中指定的美学属性,我们在这里把label设为空,就不会显示默认的示例文本"a"了,同时保留了fill颜色对应的类型图例,完美符合你的需求~
内容的提问来源于stack exchange,提问作者Alexandros Papageorgiou
相关产品推荐
相关产品推荐

