如何覆盖点和线的默认ggplot美学效果?

Ric*_*ton 3 r ggplot2

我想更改一组ggplots的点和线的默认颜色。

当然,我可以定义一种颜色,然后在每个绘图中显式调用它:

my_colour <- "firebrick"
ggplot(cars, aes(speed, dist)) + geom_line(colour = my_colour)
Run Code Online (Sandbox Code Playgroud)

我试图变得懒惰,避免每次都键入此内容。

应该有一个主题元素,我可以进行更新以更改此设置。我认为这可能有效:

theme_update(
  line = element_line(colour = "firebrick", size = 2, linetype = 1, lineend = "butt")
)
Run Code Online (Sandbox Code Playgroud)

但是它对绘图线没有影响,并且没有等效的点。我看不到主题帮助中的其他可能元素。

我可以通过破解内部GeomPath变量来强制覆盖事物,但这是一种不好的形式,因为我们不应该接触内部对象。

gp <- ggplot2:::GeomPath
gp$default_aes <- function(.) 
{
  aes(colour = "firebrick", size = 0.5, linetype = 1, alpha = NA)
}
assignInNamespace("GeomPath", gp, "ggplot2")
Run Code Online (Sandbox Code Playgroud)

更改点,线和其他几何图形的默认外观的正确方法是什么?

Ric*_*ton 5

嗯,线索出在问题中:update_geom_defaults

update_geom_defaults("point", list(colour = "firebrick"))
Run Code Online (Sandbox Code Playgroud)

我(最终)通过以下方式找到了它:

ls("package:ggplot2", pattern = "default")
Run Code Online (Sandbox Code Playgroud)