0

I used ggarrange to make a figure with two panels. I want the two panels to have the same y-axis range and increments. Even with using scale_y_continuous, I can't seem to get them to line up correctly. Plot

Here's the code I've been working with:

ei<- ggplot(data=ingestion, aes(x=Species, y=Numberofparticlesingested, colour=factor(Condition), shape=factor(Condition)))
ei1<- ei + scale_shape_manual(values = c(16,1),name="Condtion",breaks=c("Healthy","Bleached"),labels=c("Healthy","Bleached"))+ scale_color_manual(values=c("black", "grey"),name="Condtion",breaks=c("Healthy","Bleached"),labels=c("Healthy","Bleached"))+ 
  stat_summary(fun.y=mean, geom="point",size=2, position=position_dodge(width =0.90)) + 
  stat_summary(fun.data=mean_sdl, fun.args=list(mult=1), geom= 
                 "errorbar", position=position_dodge(width=0.90), width=0.2) +scale_y_continuous(limits = c(0, 60))+
  labs(x="Species", y="Average number of particles") + 
  theme_bw()+ theme(legend.justification = "top")+ theme(legend.key = element_rect(fill = "white", colour = "black"))+ theme(text = element_text(size = 14, family = "sans"))

ei2<- ei1 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + 
  theme(strip.background = element_rect(fill="white"))+ theme(
    axis.text.x = element_text(size = 14, vjust = -0.2, color = "black", family = "sans")) + theme(axis.text.y=element_text(size=14, hjust=1, color="black", family = "sans")) 
e<- ggplot(data=egestioncumulativedata, aes(x=Time, y=Numberofparticles, colour=factor(Condition), shape=factor(Condition)))
e1<- e + scale_shape_manual(values = c(16,1),name="Condtion",breaks=c("Healthy","Bleached"))+ scale_color_manual(values=c("black", "grey"),name="Condtion",breaks=c("Healthy","Bleached"))+
  facet_grid(~Species) + 
  stat_summary(fun.y=mean, geom="point", size = 2, position=position_dodge(width =0.90)) + stat_summary(fun.y=mean, geom="line", size = 0.8, position=position_dodge(width =0.90))+
  stat_summary(fun.data=mean_sdl, fun.args=list(mult=1), geom= 
                 "errorbar", position=position_dodge(width=0.90), width=0.52) + scale_x_discrete(limits=c(6, 12, 18, 24, 30, 36, 42, 48)) + scale_y_continuous(limits = c(0, 60)) +
  labs(x=expression(Time~ (Hours)), y=expression(Average ~number ~of ~particles)) + 
  theme_bw()+ theme(legend.justification = "top")+ theme(legend.key = element_rect(fill = "white", colour = "black"))+ theme(text = element_text(size = 14, family = "sans"))

e2<- e1 + theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + 
  theme(strip.background = element_rect(fill="white"))+ scale_fill_discrete(breaks=c("AI","PV"))+ theme(
    axis.text.x = element_text(size = 14, vjust = -0.25, color = "black", family = "sans")) + theme(axis.text.y=element_text(size=14, hjust=1, color="black", family = "sans")) 
library(ggpubr)
figure6<-ggarrange(ei2, 
                   e2+ theme(
                     axis.title.y = element_blank() ),
                   labels= c("a", "b"),
                   nrow = 1,ncol = 2, 
                   align = "hv", 
                   common.legend = TRUE, legend = "right")
Rui Barradas
  • 70,273
  • 8
  • 34
  • 66
Prishani
  • 3
  • 3
  • 1
    It's easier to help you if you include a simple [reproducible example](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) with sample input that can be used to test and verify possible solutions. – MrFlick Dec 14 '21 at 17:25
  • Possible duplicate: https://stackoverflow.com/questions/68540905/same-y-axis-scale-with-ggarrange – MrFlick Dec 14 '21 at 17:26

1 Answers1

0

Using the breaks and labels arguments in addition to the limits argument in scale_y_continuous should give you better control of the axes

Roasty247
  • 679
  • 5
  • 20