#r #ggplot2 #dplyr
#r #ggplot2 #dplyr
Вопрос:
Я не мог понять, где ошибка в этом коде.
Следующий код работает нормально
ggplot(mtcars) geom_point(aes(wt, mpg))
geom_rect(data=data.frame(xmin = -Inf, xmax = 4, ymin = -Inf, ymax = Inf),
aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
fill = "light blue", alpha = 0.5)
Однако тот же код при использовании %>% или в версии dplyr выдает ошибку
mtcars %>%
ggplot(aes(x= wt, y= mpg)) geom_point()
geom_rect(data=data.frame(xmin = -Inf, xmax = 4, ymin = -Inf, ymax = Inf),
aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
fill = "light blue", alpha = 0.5)
Отображается следующая ошибка
Ошибка в FUN (X[[i]], …): объект ‘wt’ не найден
Редактировать: поскольку может возникнуть проблема с отображением, как указано ниже, однако работает следующее; просто часть данных удаляется из geom_rect
ggplot(mtcars, aes(wt, mpg)) geom_point()
geom_rect(aes(xmin = -Inf, xmax = 4, ymin = -Inf, ymax = Inf),
fill = "light blue", alpha = 0.05)
Спасибо за ваше время и предложения.
Ответ №1:
В вашей версии канала указано сопоставление, к ggplot
которому geom_rect
также применяется. Укажите это geom_point
вместо этого.
mtcars %>%
ggplot()
geom_point(aes(x= wt, y= mpg))
geom_rect(data=data.frame(xmin = -Inf, xmax = 4, ymin = -Inf, ymax = Inf),
aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax),
fill = "light blue", alpha = 0.5)
Комментарии:
1. Означает ли это, что geom_rect зависит от geom_point для рисования нужного прямоугольника. Спасибо.
2. Поскольку отображение определяется отдельно в geom_rect(), должно ли оно конфликтовать с отображением в ggplot()..
3. Сопоставления, определенные в
ggplot
вызове, применяются ко всем геометриям, если в сопоставлении для геометрии не указана та же эстетика. Такgeom_rect
было эстетичноx = wt
, потому что отображение вgeom_rect
явно не указаноx
.4.В этом примере значение
data
forgeom_rect
равноmtcars
. Вы не получаете ошибку, потомуx = wt
что она действительна, потомуwt
что существует вmtcars
. В исходном примереdata
дляgeom_point
и было по-другомуgeom_rect
. Уgeom_rect
data
него не было столбцаwt
.5. Вы можете сохранить оригинал как есть и использовать
inherit.aes = FALSE
geom_rect()
.