为geoms和scales设置默认值 ggplot2

25

使用ggplot2的主题可以很容易地消除对多个或重复+ opt()...代码行的需求。但是,我想知道是否有一种方法可以为几何对象和比例尺颜色定义默认值。我希望能够设置并忘记每个图的...+ scale_fill_manual()。同样,我希望能够设置几何选项,以便不必重新键入(或忘记重新键入)像geom_text(...,size=3,color="white")这样的内容。

更新:

对于比例尺,似乎曾经有一种方法:

set_default_scale("colour", "discrete", "grey")

但是,在最新版本的ggplot2中,此函数似乎不存在。


2
请查看以下链接:http://groups.google.com/group/ggplot2-dev/browse_thread/thread/fc838059c281e835?pli=1 - baptiste
3个回答

24

现在有一种新的方法。您可以基本上覆盖任何美学比例,例如:

scale_colour_discrete <- function(...) scale_colour_brewer(..., palette="Set2")
scale_fill_discrete <- function(...) scale_fill_brewer(... , palette="Set2")

现在,您的美学将根据该行为进行着色或填充。

参考:https://groups.google.com/forum/?fromgroups=#!topic/ggplot2/w0Tl0T_U9dI

关于几何默认值,您可以使用update_geom_defaults,例如:

update_geom_defaults("line",   list(size = 2))

4
请注意在 scale_colour_discrete 中有一个 "u"!我刚试了一下没有这个字母,结果它不起作用了。 - Racing Tadpole
我曾因此遇到了一些问题,但看起来他们由于缺乏开发时间正在关闭旧问题。 https://github.com/hadley/ggplot2/issues/799 - Brandon Bertelsen

4
我想不到任何有用的关于geom的东西,但是对于scales,一个选项是利用ggplot的组件都是可以像其他R对象一样保存、存储和重新分配的事实。
因此,您可以创建自己的许多比例尺“默认”版本的集合,例如:
sfmDefault <- scale_fill_manual(...)
scmDefault <- scale_colour_manual(...)

使用您所需的默认值等等。将它们放在您的.RProfile或任何其他位置,并根据需要使用它们。

这是我目前正在使用的方法,但是,我仍然希望能够设置默认值,而不必记住... + sfm。我想要这个的另一个原因是,我想能够分享我的代码,而不会分享主题选项。 - Brandon Bertelsen
@BrandonBertelsen 对不起,我重复了你已经知道的内容!我同意你提出的原因,这并不是最佳选择。但我不知道有更好的替代方案。 - joran

3

通过设置选项,也可以更改默认的调色板,例如:

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

如果您定义了一个自定义刻度,比如 scale_color_custom,则需要按照以下方式更改选项:

options(ggplot2.continuous.colour=scale_color_custom)

请注意,您正在提供一个原始函数而不是字符串作为选项。字符串“viridis”是保留的特殊输入,但使用函数更加通用。

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