добавление нескольких слоев в ggplot с функцией - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь добавить несколько графических элементов в существующий 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 и подайте его в точку geom_point. В действительности, однако, я добавляю несколько разных геомов на график, поэтому я думаю, что мне нужно добавить несколько слоев вместе в функцию.

1 Ответ

5 голосов
/ 11 июля 2019

С 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...