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
。
解决方案
更新@aosmith 在评论中的回答最为简洁:
g +
aes(linetype = trt, shape = trt) +
scale_color_grey(start = 0, end = 0) +
theme_bw()
原始
您可以在 中使用linetype
andshape
参数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()
推荐阅读
- python-3.x - 如何一次读取多个 gpio 引脚并在树莓派 3 中执行某些任务
- twitter - Twitter 定制受众用户
- javascript - reactjs 改变 url 但不渲染任何东西
- odoo - Odoo 8:是否有从 stock.picking 到 purchase.order 的链接?
- sql - 报告生成器 (SSRS) SWITCH 语句空白值
- javascript - 如何启用和禁用鼠标悬停事件?
- c++ - 带有特殊路径部分的`std::filesystem::weakly_canonical`失败
- java - 我对 PDF 文件感到困惑
- angular - Angular - 如何将页面刷新到包含参数化路径名的原始登陆 URL
- asp.net - Aspose.Words 将 PDF 作为流返回什么都不做(ASP.NET Web API)