r - ggplot2 - создать затененную область между двумя слоями geom_abline

Естьмало сообщений что касается использования заштрихованных областей в ggplot2, но я не думаю, что кто-то точно ответит на мой вопрос. У меня есть два уклона для линий в ряде условий, и я хотел бы затенить область между ними. Вот пример данных:

dat <- data.frame(cond1=c("a","a","b","b"),
              cond2=c("c","d","c","d"),
              x=c(1,5),
              y=c(1,5),
              sl=c(1,1.2,0.9,1.1),
              int=c(0,0.1,0.1,0),
              slopeU=c(1.1,1.3,1.2,1.2),
              slopeL=c(.9,1,0.7,1))

Вот,sl является параметром среднего наклона из отдельной процедуры подгонки, иslopeU а такжеslopeL представляют верхнюю и нижнюю доверительные области на оценке наклона в каждом условии. Перехваты должны быть одинаковыми. Следующий код строит лучшие подходящие линии для каждого условия, используя некоторую грань:

p <- ggplot(dat,aes(x=x,y=y,colour=cond1))
p <- p + facet_grid(. ~ cond2)
p <- p + geom_blank()
p <- p + geom_abline(aes(intercept=int,slope=sl,colour=cond1),data=dat)
p

Я хотел бы добавить строки, определенныеintercept=int, slope=slopeU а такжеintercept=int, slope=slopeL на участок и заштриховать область между ними (например, вalpha=.5 в соответствующем цвете cond1).

Я осознаю, что с небольшими манипуляциями я мог бы создать фрейм данных, определяющий значения этих линий, по крайней мере, для двух значений x, а затем построить соответствующий geom_ribbon или geom_polygon, чтобы создать заштрихованную область, однако я хотел бы найти более элегантное решение. Или вручную задает некоторые координаты на склонах и перехватывает единственный путь? Как лучше всего создать требуемый фрейм данных (в котором должно быть больше строк, чем в исходном фрейме, чтобы учесть все комбинации условий и пар x, y).

Ответы на вопрос(1)

Ваш ответ на вопрос