假设某些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
的代码即可完成此操作。
答案 0 :(得分:2)
更新 @aosmith在评论中的答案最为紧凑:
g +
aes(linetype = trt, shape = trt) +
scale_color_grey(start = 0, end = 0) +
theme_bw()
原始
您可以在linetype
中使用shape
和aes()
参数,并在对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()