首页 > 解决方案 > 在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

标签: rggplot2

解决方案


更新@aosmith 在评论中的回答最为简洁:

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

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

如果无法更改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()

阴谋


推荐阅读