Когда что-то не работает, часто возникает проблема ссылки на неправильные данные или эстетику c в ваших geom_...
вызовах.
Старайтесь быть очень явными при вызове вашего geom
. Ниже я создаю явный фрейм данных для ваших прямоугольников. Вам следует явно вызвать эти данные, а также добавить inherit.aes = FALSE
, чтобы он не пытался прочитать эстетику c из основного вызова ggpolt.
library(tidyverse)
mydf <- data.frame(Volume = c(1:5), pH = c(3, 4, 9, 10, 12))
ann_rect <- bind_rows(
data.frame(ymin = 3.2, ymax = 4.4, xmin = -Inf, xmax = Inf, fill = "orange"),
data.frame(ymin = 8.2, ymax = 10, xmin = -Inf, xmax = Inf, fill = "pink")
)
ggplot(mydf, aes(x = Volume, y = pH)) +
geom_rect(
inherit.aes = FALSE,
data = ann_rect,
aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill = fill)
) +
geom_line(color = "purple") +
scale_fill_identity()
В качестве альтернативы, оставьте основной вызов пустым и явно ссылайтесь на данные в каждом вызове geom.
ggplot() +
geom_rect(data = ann_rect, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill = fill)) +
geom_line(data = mydf, aes(x = Volume, y = pH), color = "purple") +
scale_fill_identity()
![](https://i.imgur.com/rc3S3Sr.png)
Создано в 2020-03-19 пакетом Представить (v0.3.0)