Есть несколько сообщений об использовании затененных областей в 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 пар).