On Apr 19, 2013, at 2:06 PM, Saalem Adera wrote: > Thanks! I really appreciate everyone's help. I was able to get the x-axes > ticks very close (close enough!) to lining up on the test data using both > Dennis and David's code. So, I've got a work-around. However, I need to do > this same operation for many other sets of plots, with varied data record > lengths, meaning that using these methods would require a lot of trial and > error. > > So, I am now wondering - does anyone know of a way to automate the "snapping" > of two x-axes to each other so that they automatically line up the way they > do when facetting is used? Or, better yet, is there a way to change the > regular ggplot2 facetting code so that different plot types can be specified?
I can tell you that I attempted to "transplant" the 'scales' value in the lower plot into the scales node of the upper plot and that failed to do anything (good or bad). I suspect it because the settings were on "auto" and then got computed on the fly for the particular geom settings. -- David. > > Thanks again, > Saalem > > > On Fri, Apr 19, 2013 at 3:58 PM, David Winsemius <dwinsem...@comcast.net> > wrote: > Adding this to the first plot object seems to come pretty close: > > yp_plot + xlim(1999.6, 2004.4) > > I also tried adding and subtracting 0.5. It does not appear that 0.4 is an > exact solution. > > -- > David > On Apr 19, 2013, at 8:49 AM, Saalem Adera wrote: > > > Hi all, > > > > Thanks for the quick replies. > > > > Dennis - I tried rotating the y-axis tick labels 90 degrees and while the > > x-axes became the same width, the x-axis values still didn't line up with > > each other. So maybe I need to be more clear - how can I get the x-axis > > tick values to line up? For example, I want the "2000" x-axis tick in the > > upper and lower plots to be on top of each other (along with all the other > > x-axis ticks). > > > > Andrés - I tried the multiplot() function that you suggested, with the same > > result as when I used the grid.arrange() function - the x-axis tick values > > still don't line up. > > > > The reason I want the x-axis tick values to line up is so that with a quick > > look at the plots, a viewer will be able to understand the relationship > > between the data depicted by the boxplots and the data depicted by the line > > plot. > > > > Any other ideas on how to make this work? > > > > Thanks, > > Saalem > > > > > > On Thu, Apr 18, 2013 at 2:22 PM, Andrés Aragón Martínez <armand...@gmail.com > >> wrote: > > > >> Hi Saalem, > >> > >> Check the following: > >> > >> http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/ > >> > >> > >> Regards, > >> > >> > >> Andrés AM > >> > >> El 18/04/2013, a las 09:47, Saalem Adera <saalemad...@gmail.com> escribió: > >> > >>> Hi all, > >>> > >>> I want to arrange two ggplot2 plots on the same page with their x-axes > >>> lined up - even though one is a boxplot and the other is a line plot. Is > >>> there a simple way to do this? I know I could do this using facetting if > >>> they were both the same type of plot (for example, if they were both > >>> boxplots), but I haven't been able to figure it out for two different > >> types > >>> of plots. > >>> > >>> Below is my test case: > >>> > >>> library(ggplot2) > >>> library(gridExtra) > >>> > >>> #generate test precipitation data > >>> year<-c(2000,2001,2002,2003,2004) > >>> precip<-c(46,100,80,74,20) > >>> yp<-data.frame(year, precip) > >>> > >>> #generate test fecal coliform data > >>> year2<-c(2000,2000,2000,2000,2000,2000,2000,2000,2000,2000, > >>> 2001,2001,2001,2001,2001,2001,2001,2001,2001,2001, > >>> 2002,2002,2002,2002,2002,2002,2002,2002,2002,2002, > >>> 2003,2003,2003,2003,2003,2003,2003,2003,2003,2003, > >>> 2004,2004,2004,2004,2004,2004,2004,2004,2004,2004) > >>> fc<-sample(1:1000, 50) > >>> yfc<-data.frame(year2, fc) > >>> > >>> #make test precipitation plot > >>> yp_plot<-ggplot(yp) + geom_point() + geom_line() + aes(year, y=precip) + > >>> opts(title="Site X \n ", axis.text.x=theme_text(angle=45, hjust=1, > >>> vjust=1)) + > >>> ylab("Annual Precipitation (in.) \n ") + xlab("") > >>> > >>> #make test fecal coliform plot > >>> yfc_plot<-ggplot(yfc) + geom_boxplot() + aes(x=as.factor(year2), y=fc) + > >>> opts(axis.text.x=theme_text(angle=45, hjust=1, vjust=1)) + > >>> xlab(" \n Date") + ylab("Fecal coliforms (cfu/100 mL) \n ") + > >>> geom_smooth(stat='smooth', aes(group=1), size=1.5) + scale_y_log10() > >>> > >>> #arrange plots together > >>> grid.arrange(yp_plot, yfc_plot, ncol=1) > >>> > >>> > >>> You can see that I got the plot areas to line up using grid.arrange(), > >> but > >>> the x-axes are still off. I'd really appreciate any help I can get. > >>> > >>> Thanks, > >>> Saalem > >>> > >>> [[alternative HTML version deleted]] > >>> > >>> ______________________________________________ > >>> R-help@r-project.org mailing list > >>> https://stat.ethz.ch/mailman/listinfo/r-help > >>> PLEASE do read the posting guide > >> http://www.R-project.org/posting-guide.html > >>> and provide commented, minimal, self-contained, reproducible code. > >> > >> > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-help@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-help > > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > > and provide commented, minimal, self-contained, reproducible code. > > David Winsemius > Alameda, CA, USA > > > > > David Winsemius Alameda, CA, USA ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.