将颜色转换为ggplot2中的线型/符号

时间:2019-05-10 16:38:14

标签: r ggplot2

假设某些R包产生ggplot对象g,该对象包含不同颜色的点和/或线。但是,假设您需要以合适的形式生产此产品,以实现不显示颜色的黑白复制。

一种可能性是打印g + scale_color_grey()。但是,很难区分不同的灰度值,甚至灰度也不总是适合某些形式的复制。

是否可以通过某种方式将color分组映射到linetype(以及shape)?我不知道该怎么做。

举个例子,尝试

df <- data.frame(x = c(1:3, 1:3), y = c(4, 1, 9, 2, 7, 5), 
                 trt = factor(c(1,1,1, 2,2,2)))
g <- ggplot(df, aes(x, y, group = trt, color = trt)) + 
     geom_line() + geom_point()

给出g,用不同的点形状和线型绘制合适的黑白图。 无需更改产生g的代码即可完成此操作。

1 个答案:

答案 0 :(得分:2)

更新 @aosmith在评论中的答案最为紧凑:

g + 
  aes(linetype = trt, shape = trt) + 
  scale_color_grey(start = 0, end = 0) + 
  theme_bw()

原始
您可以在linetype中使用shapeaes()参数,并在对b&w的color的初始调用中删除ggplot()参数。

如果您无法更改g,请使用scale_color_manual将线条设置为黑色,然后使用theme_bw()创建黑白布局。

g +
  geom_line(aes(linetype = trt), size = 1) + 
  geom_point(aes(shape = trt), size = 3) +
  scale_color_manual(values = c("black", "black")) +
  theme_bw()

plot