У меня есть следующий простой линейный график с лентами, обозначающими пороговые значения по оси y.лента ggplot с постоянными `ymin` и` ymax`
library(ggplot2)
main.df <- data.frame(time = c(1:20, 1:20),
level = runif(40),
type = c(rep('A', 20), rep('B', 20)))
gg <- ggplot(main.df, aes(x = time, y = level, colour = type))
gg + geom_ribbon(ymin = 0.1, ymax = 0.25, fill = 'green') +
geom_ribbon(ymin = 0.25, ymax = 0.5, fill = 'yellow') +
geom_ribbon(ymin = 0.5, ymax = 0.95, fill = 'red') +
geom_line()
Я сделал много попыток, чтобы установить data
свойство geom_ribbon
, чтобы дать мне больше гибкости и очистить свой код. Вот один из таких примеров.
rib.df <- data.frame(low = c(0.1, 0.25, 0.5), high = c(0.25, 0.50, 0.95),
lab = c('green', 'yellow', 'red'))
gg + geom_ribbon(data = rib.df,
aes(ymin = low, ymax = high, fill = lab),
inherit.aes=FALSE) + geom_line()
У этой особой ошибки, что отсутствует эстетическая x. Что интересно не было проблемой в предыдущем примере. Я пробовал установить x и y в нем, кажется, каждая комбинация внутри aes
и нет. Я также не понимаю, почему иногда geom_ribbon
хочет y
, когда он не является необходимой эстетикой.
Мой вопрос в целом: как позвонить geom_ribbon
, установив аргумент data
для достижения результата, аналогичного приведенным выше ручным вызовам?
Я также буду рад узнать об эффективных способах достижения аналогичного визуального результата с использованием других geom
.