如何在ggplot2中更改默认的配色方案?

10
我想要更改ggplot2的默认颜色方案。也就是说,我想要在脚本中定义一个颜色方案(比如:viridis),这样所有后续的ggplot图表都会使用这个颜色方案,而不必每次调用+ scale_color_viridis()
我看到了this SO post,其中提到了update_geom_defaults(geom, new),但我找不到一种方法来解释如何使用类似于viridis的方案。
我还尝试过更新ggplot颜色,类似于this post,但正如@baptise指出的那样,这种方法并不真正有效。
简而言之:
1.定义新的颜色方案,例如viridis 2.调用ggplot时不添加+ scale_color_viridis(),但仍然使用viridis颜色方案。

正如其他问题已经指出的那样,这实际上不是ggplot支持的功能。基本上,它似乎是现有功能请求的要求:https://github.com/tidyverse/ggplot2/issues/2691。想法是使用您可以自定义的主题设置默认比例尺。但这在生产中仍不存在。 - MrFlick
1个回答

6

看起来像是

options(ggplot2.continuous.colour="viridis")

将执行您需要的操作(即ggplot将查找名为

scale_colour_whatever

的颜色比例尺,其中whatever是传递给ggplot2.continuous.colour的参数——如上面的示例中的viridis)。

library(ggplot2)
opts <- options(ggplot2.continuous.colour="viridis")
dd <- data.frame(x=1:20,y=1:20,z=1:20)

ggplot(dd,aes(x,y,colour=z))+geom_point(size=5)
options(oldopts) ## reset previous option settings

对于离散尺度,这个问题的答案是重新定义scale_colour_discrete函数并设置默认值,似乎可以很好地解决问题。
scale_colour_discrete <- function(...) {
  scale_colour_brewer(..., palette="Set1")
}

谢谢,那个方法可行。但是我找不到离散颜色比例尺的类似变量(连续的颜色比例尺也可以用于离散颜色,就像你在示例中展示的那样,但离散比例尺会更好)。 - Sebastian Sauer
@ben-bolker:再次感谢。我刚刚发现ggplot2默认使用viridis来排序因子:mtcars$am_f <- ordered(mtcars$am); ggplot(mtcars, aes(am, cyl, color = factor(am))) + geom_boxplot()。这很有帮助,因为我还无法说服重新定义scale_colour_discrete()以合理的方式使用viridis。 - Sebastian Sauer
我使用了“配对”调色板,想要向上移动一个离散跳跃,我该如何做呢?我想从深蓝色开始而不是浅蓝色。你知道吗?谢谢! - canIchangethis
@canIchangethis,请将其作为一个新问题发布(如果适当的话,链接到此问题),并使用[mcve]... - Ben Bolker
这是我的新问题 @BenBolker https://dev59.com/mMz6oIgBc1ULPQZFxyA_ - canIchangethis
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接