r语言 - 使用函数向 ggplot 添加多个图层



我正在尝试向现有的ggplot添加多个图形元素。新元素将放置在指定的 x 值周围。简化一下,我有现有的绘图 p,原点有一个点:

library(ggplot2)
p <- ggplot(data = data.frame(x = 0, y = 0), aes(x = x, y = y)) +
  geom_point()

现在我想创建一个函数,可以根据定义的 x 位置向左和向右添加一个点。我试过了:

add_points <- function(x) {
  geom_point(aes(x = x - 1, y = 0), color = "red") +
  geom_point(aes(x = x + 1, y = 0), color = "red")
}

但是当我尝试使用

p + add_points(x = 0)

我得到

错误:无法将 ggproto 对象添加在一起。你忘了添加这个吗 对象到 ggplot 对象?

基于接受参数的函数添加多个层的 ggplot 方法是什么?

PS:仅使用此函数添加一层即可,因此首先使用x值创建一个tibble并将其提供给geom_point也可以。然而,实际上,我在绘图中添加了几个不同的几何,所以我认为我需要在函数中添加几层。

help("+.gg")

您还可以提供一个列表,在这种情况下,将依次添加列表中的每个元素。

add_points <- function(x) {
  list(geom_point(aes(x = x - 1, y = 0), color = "red"),
    geom_point(aes(x = x + 1, y = 0), color = "red"))
}
p + add_points(x = 0)
#works

最新更新