Я пытаюсь создать лесной участок с гранями в R
, где оси Y не масштабируются. Но у меня проблемы.
Вот мой пример данных:
set.seed(1)
df <- data.frame(y=rnorm(10),x=c(1:5,1:3,1:2),group=c(rep("a",5),rep("b",3),rep("c",2)),name=c(paste("a",1:5,sep=""),paste("b",1:3,sep=""),paste("c",1:2,sep="")))
df$ymin <- df$y-runif(10,0.5,0.7)
df$ymax <- df$y+runif(10,0.5,0.7)
Если я использую:
p <- ggplot(df,aes(y=y,x=x,ymin=ymin,ymax=ymax))+geom_point()+coord_flip()+scale_y_discrete(limits=df$name)+facet_wrap(~group,ncol=3,scales="free")+geom_vline(lty=2,aes(xintercept=0,colour="black"))
Я получаю сообщение об ошибке:
Error in facet_render.wrap(plot$facet, panel, plot$coordinates, theme, :
ggplot2 does not currently support free scales with a non-cartesian coord or coord_flip.
Что уже обсуждалось на SO.
Попытка решить эту проблему, вручную переворачивая оси, следовательно, отбрасывая часть flip_coord()
, почти работает - я не получаю полосы ошибок:
p <- ggplot(df,aes(y=x,x=y,xmin=ymin,xmax=ymax))+geom_point()+scale_y_discrete(limits=df$name)+facet_wrap(~group,ncol=3,scales="free")+geom_vline(lty=2,aes(xintercept=0,colour="black"))
Итак, мой вопрос: как мне получить панель ошибок? Кроме того, прямо сейчас оси Y не оставляют достаточно места ниже нижней и над верхней точками. Как добавить по биту с каждого конца, чтобы точки не обрезались, как сейчас?