这是一个关于ggplot2包的问题(作者:Hadley Wickham).我有现有的ggplot对象具有不同的颜色(resp形状,线型,填充...),我想映射到单一颜色,例如黑色.推荐的方法是什么?
澄清:我必须使用这些ggplot对象:我不能重新制作它们
将变量分组为因子的ggplot:这是我需要使用的绘图对象
p <- ggplot(mtcars, aes(x = mpg, y = wt, group = factor(cyl), colour = factor(cyl))) +
geom_point(size = 5)
Run Code Online (Sandbox Code Playgroud)
我所知道的几种方法:
scale_colour_grey黑客p + scale_colour_grey(start = 0, end = 0) + # gives correct, useless legend
guides(color = FALSE)
Run Code Online (Sandbox Code Playgroud)
较短的p + scale_colour_grey(0,0)不起作用,你必须明确start和end.
scale_colour_manual与rep()黑客p + scale_colour_manual(values = rep("black",3)) # gives correct, useless legend
Run Code Online (Sandbox Code Playgroud)
更简单的方法scale_colour_manual(values = "black")不起作用.这可能是最直观的方法.必须指定向量的长度使得它不那么有吸引力.
geom_point()召回p + geom_point(colour = "black") + # gives incorrect legend
guides(color = FALSE)
Run Code Online (Sandbox Code Playgroud)
有充分证据表明不允许以下情况:
p + scale_colour_manual(colour = "black")
Error in discrete_scale(aesthetic, "manual", pal, ...) :
unused argument (colour = "black")
Run Code Online (Sandbox Code Playgroud)
直接删除颜色映射似乎工作:
p_bw = p
p_bw$mapping$colour = NULL
gridExtra::grid.arrange(p, p_bw)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
692 次 |
| 最近记录: |