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 at 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 at 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 at meddatainc.com >>> <mailto:agents at 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 at meddatainc.com >>> <mailto:agents at 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 at r-project.org <mailto:R-help at 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 at r-project.org <mailto:R-help at 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 at 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 at 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 at 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
On 07/24/2020 05:56 PM, Rui Barradas wrote:> 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 at 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 at 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 at meddatainc.com >>>> <mailto:agents at 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 at meddatainc.com >>>> <mailto:agents at 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 at r-project.org <mailto:R-help at 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 at r-project.org <mailto:R-help at 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 at 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 at 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 at 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. > >Thank you for your example. However, this does not align the plot areas horizontally. It happens to do so in this example because the y-axis labels are the same length etc but when this is not the case, it fails.
Hello, Inline. ?s 16:54 de 25/07/2020, H escreveu:> On 07/24/2020 05:56 PM, Rui Barradas wrote: >> 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 at 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 at 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 at meddatainc.com >>>>> <mailto:agents at 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 at meddatainc.com >>>>> <mailto:agents at 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 at r-project.org <mailto:R-help at 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 at r-project.org <mailto:R-help at 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 at 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 at 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 at 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. >> > Thank you for your example. However, this does not align the plot areas horizontally. It happens to do so in this example because the y-axis labels are the same length etc but when this is not the case, it fails.Maybe it fails but can you give an example? The question, as far as I understand it, is about the plots' relative heights, not about horizontal alignment. And (all) others have asked you to give a reproducible example, please don't ask us to guess a use case axis labels lengths (!), which is impossible to do. Anyway, the function cowplot::plot_grid has an argument `align`. One of the possible values is "hv" for both horizontal and vertical alignment. Hope this helps, Rui Barradas> > ______________________________________________ > R-help at 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