

Hi all,
I want to arrange two ggplot2 plots on the same page with their xaxes
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 xaxes are still off. I'd really appreciate any help I can get.
Thanks,
Saalem
[[alternative HTML version deleted]]
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


Hi Saalem,
Check the following:
http://www.cookbookr.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/Regards,
Andrés AM
El 18/04/2013, a las 09:47, Saalem Adera < [hidden email]> escribió:
> Hi all,
>
> I want to arrange two ggplot2 plots on the same page with their xaxes
> 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 xaxes are still off. I'd really appreciate any help I can get.
>
> Thanks,
> Saalem
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/rhelp> PLEASE do read the posting guide http://www.Rproject.org/postingguide.html> and provide commented, minimal, selfcontained, reproducible code.
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


Hi all,
Thanks for the quick replies.
Dennis  I tried rotating the yaxis tick labels 90 degrees and while the
xaxes became the same width, the xaxis values still didn't line up with
each other. So maybe I need to be more clear  how can I get the xaxis
tick values to line up? For example, I want the "2000" xaxis tick in the
upper and lower plots to be on top of each other (along with all the other
xaxis ticks).
Andrés  I tried the multiplot() function that you suggested, with the same
result as when I used the grid.arrange() function  the xaxis tick values
still don't line up.
The reason I want the xaxis 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 < [hidden email]
> wrote:
> Hi Saalem,
>
> Check the following:
>
> http://www.cookbookr.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/>
>
> Regards,
>
>
> Andrés AM
>
> El 18/04/2013, a las 09:47, Saalem Adera < [hidden email]> escribió:
>
> > Hi all,
> >
> > I want to arrange two ggplot2 plots on the same page with their xaxes
> > 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 xaxes are still off. I'd really appreciate any help I can get.
> >
> > Thanks,
> > Saalem
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/rhelp> > PLEASE do read the posting guide
> http://www.Rproject.org/postingguide.html> > and provide commented, minimal, selfcontained, reproducible code.
>
>
[[alternative HTML version deleted]]
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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, aes(factor(year), y=precip)) + geom_point() +
geom_line(aes(group = 1)) +
labs(title = "Site X \n ", x = "",
y = "Annual Precipitation (in.) \n ") +
theme(axis.text.x = element_text(angle=45, hjust=1, vjust=1),
axis.text.y = element_text(angle = 90, hjust = 0.5, vjust = 0.5))
#make test fecal coliform plot
yfc_plot<ggplot(yfc) + geom_boxplot() + aes(x=factor(year2), y=fc) +
theme(axis.text.x = element_text(angle=45, hjust=1, vjust=1),
axis.text.y = element_text(angle = 90, hjust = 0.5,
vjust = 0.5)) +
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)
On Fri, Apr 19, 2013 at 8:49 AM, Saalem Adera < [hidden email]> wrote:
> Hi all,
>
> Thanks for the quick replies.
>
> Dennis  I tried rotating the yaxis tick labels 90 degrees and while the
> xaxes became the same width, the xaxis values still didn't line up with
> each other. So maybe I need to be more clear  how can I get the xaxis
> tick values to line up? For example, I want the "2000" xaxis tick in the
> upper and lower plots to be on top of each other (along with all the other
> xaxis ticks).
>
> Andrés  I tried the multiplot() function that you suggested, with the same
> result as when I used the grid.arrange() function  the xaxis tick values
> still don't line up.
>
> The reason I want the xaxis 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
> < [hidden email]> wrote:
>>
>> Hi Saalem,
>>
>> Check the following:
>>
>> http://www.cookbookr.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/>>
>>
>> Regards,
>>
>>
>> Andrés AM
>>
>> El 18/04/2013, a las 09:47, Saalem Adera < [hidden email]> escribió:
>>
>> > Hi all,
>> >
>> > I want to arrange two ggplot2 plots on the same page with their xaxes
>> > 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 xaxes are still off. I'd really appreciate any help I can get.
>> >
>> > Thanks,
>> > Saalem
>> >
>> > [[alternative HTML version deleted]]
>> >
>> > ______________________________________________
>> > [hidden email] mailing list
>> > https://stat.ethz.ch/mailman/listinfo/rhelp>> > PLEASE do read the posting guide
>> > http://www.Rproject.org/postingguide.html>> > and provide commented, minimal, selfcontained, reproducible code.
>>
>
>
>
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


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 yaxis tick labels 90 degrees and while the
> xaxes became the same width, the xaxis values still didn't line up with
> each other. So maybe I need to be more clear  how can I get the xaxis
> tick values to line up? For example, I want the "2000" xaxis tick in the
> upper and lower plots to be on top of each other (along with all the other
> xaxis ticks).
>
> Andrés  I tried the multiplot() function that you suggested, with the same
> result as when I used the grid.arrange() function  the xaxis tick values
> still don't line up.
>
> The reason I want the xaxis 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 < [hidden email]
>> wrote:
>
>> Hi Saalem,
>>
>> Check the following:
>>
>> http://www.cookbookr.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/>>
>>
>> Regards,
>>
>>
>> Andrés AM
>>
>> El 18/04/2013, a las 09:47, Saalem Adera < [hidden email]> escribió:
>>
>>> Hi all,
>>>
>>> I want to arrange two ggplot2 plots on the same page with their xaxes
>>> 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 xaxes are still off. I'd really appreciate any help I can get.
>>>
>>> Thanks,
>>> Saalem
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> [hidden email] mailing list
>>> https://stat.ethz.ch/mailman/listinfo/rhelp>>> PLEASE do read the posting guide
>> http://www.Rproject.org/postingguide.html>>> and provide commented, minimal, selfcontained, reproducible code.
>>
>>
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/rhelp> PLEASE do read the posting guide http://www.Rproject.org/postingguide.html> and provide commented, minimal, selfcontained, reproducible code.
David Winsemius
Alameda, CA, USA
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


Thanks! I really appreciate everyone's help. I was able to get the xaxes
ticks very close (close enough!) to lining up on the test data using both
Dennis and David's code. So, I've got a workaround. 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 xaxes 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?
Thanks again,
Saalem
On Fri, Apr 19, 2013 at 3:58 PM, David Winsemius < [hidden email]>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 yaxis tick labels 90 degrees and while the
> > xaxes became the same width, the xaxis values still didn't line up with
> > each other. So maybe I need to be more clear  how can I get the xaxis
> > tick values to line up? For example, I want the "2000" xaxis tick in
> the
> > upper and lower plots to be on top of each other (along with all the
> other
> > xaxis ticks).
> >
> > Andrés  I tried the multiplot() function that you suggested, with the
> same
> > result as when I used the grid.arrange() function  the xaxis tick
> values
> > still don't line up.
> >
> > The reason I want the xaxis 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 <
> [hidden email]
> >> wrote:
> >
> >> Hi Saalem,
> >>
> >> Check the following:
> >>
> >> http://www.cookbookr.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/> >>
> >>
> >> Regards,
> >>
> >>
> >> Andrés AM
> >>
> >> El 18/04/2013, a las 09:47, Saalem Adera < [hidden email]>
> escribió:
> >>
> >>> Hi all,
> >>>
> >>> I want to arrange two ggplot2 plots on the same page with their xaxes
> >>> 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 xaxes are still off. I'd really appreciate any help I can get.
> >>>
> >>> Thanks,
> >>> Saalem
> >>>
> >>> [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> [hidden email] mailing list
> >>> https://stat.ethz.ch/mailman/listinfo/rhelp> >>> PLEASE do read the posting guide
> >> http://www.Rproject.org/postingguide.html> >>> and provide commented, minimal, selfcontained, reproducible code.
> >>
> >>
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/rhelp> > PLEASE do read the posting guide
> http://www.Rproject.org/postingguide.html> > and provide commented, minimal, selfcontained, reproducible code.
>
> David Winsemius
> Alameda, CA, USA
>
>
[[alternative HTML version deleted]]
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.


On Apr 19, 2013, at 2:06 PM, Saalem Adera wrote:
> Thanks! I really appreciate everyone's help. I was able to get the xaxes ticks very close (close enough!) to lining up on the test data using both Dennis and David's code. So, I've got a workaround. 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 xaxes 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 < [hidden email]> 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 yaxis tick labels 90 degrees and while the
> > xaxes became the same width, the xaxis values still didn't line up with
> > each other. So maybe I need to be more clear  how can I get the xaxis
> > tick values to line up? For example, I want the "2000" xaxis tick in the
> > upper and lower plots to be on top of each other (along with all the other
> > xaxis ticks).
> >
> > Andrés  I tried the multiplot() function that you suggested, with the same
> > result as when I used the grid.arrange() function  the xaxis tick values
> > still don't line up.
> >
> > The reason I want the xaxis 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 < [hidden email]
> >> wrote:
> >
> >> Hi Saalem,
> >>
> >> Check the following:
> >>
> >> http://www.cookbookr.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/> >>
> >>
> >> Regards,
> >>
> >>
> >> Andrés AM
> >>
> >> El 18/04/2013, a las 09:47, Saalem Adera < [hidden email]> escribió:
> >>
> >>> Hi all,
> >>>
> >>> I want to arrange two ggplot2 plots on the same page with their xaxes
> >>> 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 xaxes are still off. I'd really appreciate any help I can get.
> >>>
> >>> Thanks,
> >>> Saalem
> >>>
> >>> [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> [hidden email] mailing list
> >>> https://stat.ethz.ch/mailman/listinfo/rhelp> >>> PLEASE do read the posting guide
> >> http://www.Rproject.org/postingguide.html> >>> and provide commented, minimal, selfcontained, reproducible code.
> >>
> >>
> >
> > [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [hidden email] mailing list
> > https://stat.ethz.ch/mailman/listinfo/rhelp> > PLEASE do read the posting guide http://www.Rproject.org/postingguide.html> > and provide commented, minimal, selfcontained, reproducible code.
>
> David Winsemius
> Alameda, CA, USA
>
>
>
>
>
David Winsemius
Alameda, CA, USA
______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/rhelpPLEASE do read the posting guide http://www.Rproject.org/postingguide.htmland provide commented, minimal, selfcontained, reproducible code.

