你如何覆盖默认的ggplot对点和线的美学?

时间:2014-08-28 12:14:41

标签: r ggplot2

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

当然,我可以定义一种颜色,然后在每个情节中明确地调用它:

my_colour <- "firebrick"
ggplot(cars, aes(speed, dist)) + geom_line(colour = my_colour)

我试图变懒,每次都不要打字。

我应该更新一个主题元素来改变它。我认为这可能有用:

theme_update(
  line = element_line(colour = "firebrick", size = 2, linetype = 1, lineend = "butt")
)

但它对情节线没有影响,并且没有相应的积分。我无法在help for themes中看到任何其他可能的元素。

我可以通过黑客攻击内部GeomPath变量强制覆盖事物,但这是不好的形式,因为我们不应该触摸内部对象。

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

更改点,线和其他几何体的默认美学的正确方法是什么?

1 个答案:

答案 0 :(得分:5)

嗯,问题在于update_geom_defaults

update_geom_defaults("point", list(colour = "firebrick"))

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

ls("package:ggplot2", pattern = "default")