Есть несколькосообщенийоб использовании заштрихованных областей в 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
— средний параметр наклона из отдельной процедуры подбора, а наклон U
и наклон L
представляют верхнюю и нижнюю доверительные области. по оценке наклона в каждом состоянии. Перехваты должны быть одинаковыми. Следующий код строит наиболее подходящие линии для каждого условия, используя некоторую грань:
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,lope=slopeU
и intercept=int,lope= наклон L
к графику и закрасьте область между ними (например, при alpha=.5
соответствующим цветом cond1).
Я понимаю, что с небольшими манипуляциями я мог бы создать фрейм данных, определяющий значения этих линий по крайней мере для двух значений x, а затем построить соответствующий geom_ribbon или geom_polygon для создания заштрихованной области, однако я хотел бы найти более элегантный решение.Или только вручную указывать какие-то координаты по склонам и перехватам? Как мне лучше всего создать требуемый фрейм данных (в котором должно быть больше строк, чем в исходном фрейме, чтобы учесть все комбинации условий и пар x, y).