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

标签 r function ggplot2

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

相关文章:

r - 如何在图像图中为 NA 分配特定颜色

r - 在函数内部打印或显示变量

Python tabstop-aware len() 和填充函数

javascript - 如果函数中的语句不起作用

r - 图例标题的垂直对齐(ggplot2)

r - ggplot2 中不太平滑的线,geom_smooth 的替代品?

r - 如何在R中使用窗口函数

r - 如何使用 R 中的 if 条件语句将矩阵列表的所有行设置为零

c++ - 如何正确分解代码?

r - 在 ggplot2 中绘制污染物超标的持续时间