2016-12-01 4 views
0

Я пытаюсь создать сюжет с использованием ggplot2 с 9 подзаголовками. Моя цель состоит в том, чтобы позволить вертикальной оси масштабироваться на индивидуальном уровне для каждой из 9 подзаговоров. С этой целью я пытаюсь использовать синтаксис facet_wrap (scale = "free_y"). Однако, похоже, он не работает для меня, и вместо этого вертикальная ось кажется одинаковой во всех 9 подзаголовках. Ниже MWE:facet_wrap (scale = "free_y"), не создавая желаемого результата

x <- rep(c(rep("F",4),rep("M",4)),9) 
y <- abs(c(rnorm(36,0,20),rnorm(36,0,5))) 
z <- rep(1:9,each=8) 
meanG1 <- c() 
meanG2 <- c() 
for (i in c(1,9,17,25,33,41,49,57,65)){ 
    meanG1 <- c(meanG1, rep(mean(y[i:(i+3)]),8)) 
    meanG2 <- c(meanG2, rep(mean(y[5:(i+3)]),8)) 
} 
dat <- data.frame(x=x,y=y,z=z,meanG1=meanG1,meanG2=meanG2) 

ggplot(dat, aes(x, y)) + 
    geom_point(aes(colour = factor(x)), shape = 20, size=5, alpha = 0.5) + 
    scale_shape(solid = FALSE) + 
    ggtitle(paste("My Plot")) + 
    ylab("Count") + 
    scale_y_continuous(limits=c(0, max(dat$y))) + 
    theme(axis.title.x = element_blank(), 
     legend.position="bottom", 
     axis.text=element_text(size=12), 
     axis.title=element_text(size=12), 
     legend.title=element_text(size=12), 
     legend.text=element_text(size=12), 
     plot.title=element_text(hjust=0.5)) + 
    labs(colour = "Group", size=12) + 
    geom_segment(aes(x = 1, y = meanG1, xend = 2, yend = meanG2), colour="gray25", size = 0.1) + 
    facet_wrap(~ z, ncol = 3, scales = "free_y") 

Если у кого есть советы о том, что может быть причиной этого и/или как это исправить, я бы все уши! Спасибо.

ответ

3

Вы должны удалить это из кода ggplot

scale_y_continuous(limits=c(0, max(dat$y))) 

, потому что это «фиксация» диапазон оси у всех граней

Смежные вопросы