将geom_text中的图例文字颜色匹配为符号
发布时间:2020-12-14 19:31:06 所属栏目:资源 来源:网络整理
导读:我试图通过使用geom_text将由图例文本颜色匹配为由因子变量生成的文本的颜色.这里是一个最小的工作示例: df - data.frame(a=rnorm(10),b=1:10,c=letters[1:10],d=c("one","two"))p1 -ggplot(data=df,aes(x=b,y=a))p1 - p1 + geom_text(aes(label = c,color=
我试图通过使用geom_text将由图例文本颜色匹配为由因子变量生成的文本的颜色.这里是一个最小的工作示例:
df <- data.frame(a=rnorm(10),b=1:10,c=letters[1:10],d=c("one","two")) p1 <-ggplot(data=df,aes(x=b,y=a)) p1 <- p1 + geom_text(aes(label = c,color=d,fontface="bold")) p1 <- p1 + scale_color_hue(name="colors should match",breaks=c("one","two"),labels=c("should be pink","should be blue")) p1 我确定它是一个简单的修复.任何有关以前职位的建议或参考将有所帮助.我没有找到任何具体的东西. 解决方法
从上面的joran的评论开始,您可以直接编辑Grobs.这是一个相当难看的代码,所以很抱歉(将有一个更优雅的方式来做这个使用网格命令 – 希望有人会发布].
library(grid) gglabcol <- function(plot1) { g <- ggplotGrob(plot1) # legend grobs g.b <- g[["grobs"]][[which(g$layout$name=="guide-box")]] l <- g.b[["grobs"]][[1]][["grobs"]] # get grobs for legend symbols (extract colour) lg <- l[sapply(l,function(i) grepl("GRID.text",i))] # get grobs for legend labels lb <- l[sapply(l,function(i) grepl("guide.label",i))] # get change colour of labels to colour of symbols for(i in seq_along(lg)) { lb[[i]]$gp$col <- lg[[i]]$gp$col g.b[["grobs"]][[1]][["grobs"]][sapply(g.b[["grobs"]][[1]][["grobs"]],i))][[i]] <- lb[[i]] } # overwrite original legend g[["grobs"]][[which(g$layout$name=="guide-box")]] <- g.b grid.draw(g) invisible(g) } 情节 gglabcol(p1) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |