ggplot:根据两个几何的组合创建一个新的几何

时间:2019-04-09 08:40:08

标签: r ggplot2

我有两个几何,例如geom_smoothgeom_point。我想创建一个新的单独的几何geom_smoothpoint,它将绘制上述两个几何。

我想要这样:

ggplot(iris, aes(x=Sepal.Length, y=Petal.Width)) +
  geom_smoothpoint()

给出与以下相同的结果:

ggplot(iris, aes(x=Sepal.Length, y=Petal.Width)) +
  geom_point() +
  geom_smooth(method="lm")

enter image description here

我尝试将这两个结合:

geom_smoothpoint <- function(){
  geom_point() +
  geom_smooth(method="lm")
}

但这并不能真正起作用。似乎必须组合ggproto对象,但是我不确定如何组合。有没有简单的方法将两个几何组合成一个?谢谢!

1 个答案:

答案 0 :(得分:3)

您当然可以编写自己的geom,但这绝对是过头了。在函数中返回一个列表很容易,您可以方便地将其添加到绘图中:

geom_smoothpoint <- function() {
   list(geom_point(), geom_smooth(method = "lm"))
}

ggplot(iris, aes(x=Sepal.Length, y=Petal.Width)) +
   geom_smoothpoint()