在现有的ggplots中将颜色更改为黑色

Pat*_*ckT 3 r ggplot2

这是一个关于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)

在此输入图像描述

我所知道的几种方法:

1. 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)不起作用,你必须明确startend.

2. scale_colour_manualrep()黑客

p + scale_colour_manual(values = rep("black",3)) # gives correct, useless legend
Run Code Online (Sandbox Code Playgroud)

更简单的方法scale_colour_manual(values = "black")不起作用.这可能是最直观的方法.必须指定向量的长度使得它不那么有吸引力.

3. 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)

Gre*_*gor 5

直接删除颜色映射似乎工作:

p_bw = p
p_bw$mapping$colour = NULL
gridExtra::grid.arrange(p, p_bw)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述