ggraph中geom_edge_link()无法指定边颜色的问题求助
解决ggraph边颜色总是变成橙色的问题
嘿,这个坑我之前踩过!你遇到的问题根源在于错误地把颜色值放进了aes()映射里。
当你在geom_edge_link(aes(edge_colour='grey'))里这么写时,ggraph(底层基于ggplot2)会把'grey'当成一个分类变量的水平标签,而不是直接应用的颜色代码。这时候它会调用默认的离散色板,第一个颜色就是橙色,所以不管你写什么字符串,只要是在aes()里作为分类值,都会显示色板里的对应颜色。
正确的两种处理方式:
情况1:所有边用同一种固定颜色
直接把edge_colour参数放在geom_edge_link()的外面,不要用aes()包裹:library(igraph) library(ggraph) ring <- sample_k_regular(10, 2) ggraph(ring) + geom_edge_link(edge_colour='grey') + # 移出aes(),直接设置颜色 geom_node_point(shape=21, color='black', size=7, stroke=1, fill='white') + theme_graph()情况2:根据边属性映射不同颜色
如果需要根据边的某个属性(比如权重、类型)设置不同颜色,才需要把edge_colour放进aes()里,同时用scale_edge_colour_manual()指定对应颜色:# 先给边添加一个示例属性 E(ring)$type <- sample(c('A', 'B'), 10, replace = TRUE) ggraph(ring) + geom_edge_link(aes(edge_colour = type)) + # 基于属性映射 scale_edge_colour_manual(values = c('grey', 'darkblue')) + # 指定每个属性对应的颜色 geom_node_point(shape=21, color='black', size=7, stroke=1, fill='white') + theme_graph()
简单来说:固定颜色直接设置,映射颜色才用aes()配合scale函数~
内容的提问来源于stack exchange,提问作者Ro.han.solo
相关产品推荐
相关产品推荐

