是否可以轻松地降低 ggplot 的饱和度?

2024-01-01

是否可以去饱和ggplot容易地?


原则上,可能有两种可能的策略。
首先,将一些函数应用于ggplot对象(或者,可能,Grob对象)来降低所有颜色的饱和度。二、打印的一些技巧ggplot渲染时降低饱和度.rmd文件。这两种策略对我来说都可以,但第一种策略当然更有希望。
创造ggplot从一开始就采用灰色并不是一个好的选择,因为我们的想法是拥有与以灰色阴影打印相同的情节。


关于如何在 R 中进行去饱和,有一些类似的问题和非常好的答案。Here https://stackoverflow.com/questions/26314701/r-reducing-colour-saturation-of-a-colour-palette/26322593#26322593是一种降低调色板饱和度的便捷方法。和here https://stackoverflow.com/questions/31800687/how-to-get-a-pixel-matrix-from-grayscale-image-in-r/31804561#31804561是使光栅图像去饱和的方法。我正在寻找的是一种降低整体饱和度的简单方法ggplot.


刚刚遇到这个问题。实验包 colorblindr(由 Claire McWhite 和我自己编写)包含一个可以以通用方式执行此操作的函数。我正在使用@hrbrmstr 中的示例图:

library(ggplot2)
library(viridis)

gg <- ggplot(mtcars) + 
  geom_point(aes(x=mpg, y=wt, fill=factor(cyl), size=factor(carb)), 
             color="black", shape=21) + 
  scale_fill_viridis(discrete = TRUE) +
  scale_size_manual(values = c(3, 6, 9, 12, 15, 18)) +
  facet_wrap(~am)
gg

现在让我们使用以下方法降低该图的饱和度edit_colors()colorblindr 的函数:

library(colorblindr) # devtools::install_github("clauswilke/colorblindr")
library(colorspace) # install.packages("colorspace", repos = "http://R-Forge.R-project.org") --- colorblindr requires the development version
# need also install cowplot; current version on CRAN is fine.

gg_des <- edit_colors(gg, desaturate)
cowplot::ggdraw(gg_des)

功能edit_colors()采用 ggplot2 对象或 grob 并应用颜色转换函数(此处desaturate) 到 grob 中的所有颜色。

我们可以为转换函数提供额外的参数,例如进行部分去饱和:

gg_des <- edit_colors(gg, desaturate, amount = 0.7)
cowplot::ggdraw(gg_des)

我们还可以进行其他转换,例如色盲模拟:

gg_des <- edit_colors(gg, deutan)
cowplot::ggdraw(gg_des)

最后,我们可以分别操纵线条颜色和填充颜色。例如,我们可以将所有填充区域设为蓝色。 (不确定这是否有用,但无论如何。)

gg_des <- edit_colors(gg, fillfun = function(x) "lightblue")
cowplot::ggdraw(gg_des)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以轻松地降低 ggplot 的饱和度? 的相关文章

随机推荐