[R] Arranging ggplot2 objects with ggplotGrob()

Rui Barradas ru|pb@rr@d@@ @end|ng |rom @@po@pt
Fri Jul 24 23:56:04 CEST 2020


Hello,

I've just tried it.

library(ggplot2)
#library(grid)
library(cowplot)

s <- ggplot(data = subset(iris, Species == 'virginica'), 
aes(Sepal.Length, Sepal.Width)) + geom_point()
v <- ggplot(data = subset(iris, Species == 'setosa'), aes(Sepal.Length, 
Sepal.Width)) + geom_point()

#g2 <- ggplotGrob(s)
#g3 <- ggplotGrob(v)
#g <- rbind(g2, g3, size = "first")

cowplot::plot_grid(s, v, align = "h", nrow = 2, rel_heights = 2:1)


Hope this helps,

Rui Barradas

Às 19:57 de 24/07/2020, Felipe Carrillo via R-help escreveu:
> What about cowplot?
> https://cran.r-project.org/web/packages/cowplot/vignettes/introduction.html
>
>      On Friday, July 24, 2020, 11:51:17 AM PDT, H <agents using meddatainc.com> 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?|
>
> ||
>
>
>      [[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]]
>
> ______________________________________________
> 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.


-- 
Este e-mail foi verificado em termos de vírus pelo software antivírus Avast.
https://www.avast.com/antivirus



More information about the R-help mailing list