[R] Arranging ggplot2 objects with ggplotGrob()

Bert Gunter bgunter@4567 @end|ng |rom gm@||@com
Fri Jul 24 21:58:38 CEST 2020


?grid.frame, etc. should be straightforward for this I would think.
But of course you have to resort to the underlying grid framework rather
than the ggplot2 interface.

Bert Gunter

"The trouble with having an open mind is that people keep coming along and
sticking things into it."
-- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )


On Fri, Jul 24, 2020 at 12:11 PM H <agents using meddatainc.com> wrote:

> On 07/24/2020 02:50 PM, H wrote:
> > On 07/24/2020 02:03 PM, Jeff Newmiller wrote:
> >> The set of people interested in helping when you supply a minimal
> reproducible example is rather larger than the set of people willing to
> read the documentation for you (hint) and guess what aspect of alignment
> you are having trouble with.
> >>
> >> On July 24, 2020 10:46:57 AM PDT, H <agents using meddatainc.com> wrote:
> >>> On 07/24/2020 01:14 PM, John Kane wrote:
> >>>> <i>Well, I am not looking for help debugging my code but for
> >>> information to better understand arranging plots vertically. The code
> >>> above aligns them horizontally as expected.</i>
> >>>> Sigh, we know the code works but we do not know what the plots are
> >>> and we cannot play around with them to see if we can help you if we
> >>> have nothing to work with.
> >>>> On Fri, 24 Jul 2020 at 12:12, H <agents using meddatainc.com
> >>> <mailto:agents using meddatainc.com>> wrote:
> >>>>     On 07/24/2020 05:29 AM, Erich Subscriptions wrote:
> >>>>     > Hav a look at the packages cowplot and patchwork
> >>>>     >
> >>>>     >> On 24.07.2020, at 02:36, H <agents using meddatainc.com
> >>> <mailto:agents using meddatainc.com>> wrote:
> >>>>     >>
> >>>>     >> I am trying to arrange two plots vertically, ie plot 2 below
> >>> plot 1, where I want the plots to align columnwise but have a height
> >>> ratio of eg 3:1.
> >>>>     >>
> >>>>     >> My attempts so far after consulting various webpages is that
> >>> the following code aligns them columnwise correctly but I have, so far,
> >>> failed in setting the relative heights...
> >>>>     >>
> >>>>     >> g2<-ggplotGrob(s)
> >>>>     >> g3<-ggplotGrob(v)
> >>>>     >> g<-rbind(g2, g3, size = "first")
> >>>>     >> g$widths<-unit.pmax(g2$widths, g3$widths)
> >>>>     >>
> >>>>     >> what would the appropriate statement for the relative heights
> >>> to add here be?
> >>>>     >>
> >>>>     >> grid.newpage()
> >>>>     >> grid.draw(g)
> >>>>     >>
> >>>>     >> Thank you!
> >>>>     >>
> >>>>     >> ______________________________________________
> >>>>     >> R-help using r-project.org <mailto:R-help using r-project.org> mailing
> >>> list -- To UNSUBSCRIBE and more, see
> >>>>     >> 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.
> >>>>     So this is not possible without using one of those two packages?
> >>> I got the impression I should be able to use grid.arrange to do so but
> >>> was not able to get it to work without disturbing the width alignment
> >>> above...
> >>>>     ______________________________________________
> >>>>     R-help using r-project.org <mailto:R-help using r-project.org> mailing list
> >>> -- To UNSUBSCRIBE and more, see
> >>>>     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.
> >>>> --
> >>>> John Kane
> >>>> Kingston ON Canada
> >>> No need to play around with anything. I am simply looking for
> >>> assistance on how to use eg arrangeGrob to not only align two plots
> >>> columnwise but also adjust their heights relative to each other rather
> >>> than 1:1.
> >>>
> >>> Can arrangeGrob() be used for that?
> >>>
> >>>
> >>>     [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> >>> 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.
> >
> > Look at
> https://cran.r-project.org/web/packages/egg/vignettes/Ecosystem.html
> where there are two mpg charts, one above the other. What would I need to
> add to:
> >
> > |library(gtable) g2 <-ggplotGrob(p2) g3 <-ggplotGrob(p3) g <-rbind(g2,
> g3, size = "first") g$widths <-unit.pmax(g2$widths, g3$widths)
> grid.newpage() grid.draw(g) |
> >
> > |to make the second chart 1/2 the size of the top one?|
> >
> > ||
> >
> The following code aligns the two plot areas of the two charts perfectly
> but they are the same height whereas I want to make the bottom one 1/2 as
> tall as the top one:
>
> g2<-ggplotGrob(s)
> g3<-ggplotGrob(v)
> g<-rbind(g2, g3, size = "first")
> g$widths<-unit.pmax(g2$widths, g3$widths)
> grid.newpage()
> grid.draw(g)
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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]]



More information about the R-help mailing list