我正在尝试向现有的 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)
我懂了
Error: Cannot add ggproto objects together. Did you forget to add this object to a ggplot object?
基于带参数的函数添加多个图层的 ggplot 方法是什么?
PS:仅使用此函数添加一层确实有效,因此首先使用 x 值创建一个 tibble 并将其提供给 geom_point 也可以。然而,实际上,我在绘图中添加了几个不同的几何图形,所以我认为我需要在函数中添加几个图层。
最佳答案
从 help("+.gg")
:
You can also supply a list, in which case each element of the list will be added in turn.
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
关于r - 使用函数向 ggplot 添加多个图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56990018/