我正在尝试向现有的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