?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 at 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 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?| > > > > || > > > 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 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]]
Would this work: ``` library(ggplot2) library(cowplot) p1 <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point() p2 <- ggplot(iris, aes(x = Petal.Length, y = Petal.Width * 1000)) + geom_point() plot_grid(p1, p2, ncol = 1, align = "hv", rel_heights = c(2, 1)) ``` Best, Ulrik On 2020-07-24 21:58, Bert Gunter wrote:> ?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 at 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 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?| >> > >> > || >> > >> 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 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.
On 07/28/2020 12:35 PM, Ulrik Stervbo wrote:> Would this work: > > ``` > library(ggplot2) > library(cowplot) > > p1 <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width)) + geom_point() > p2 <- ggplot(iris, aes(x = Petal.Length, y = Petal.Width * 1000)) + geom_point() > > plot_grid(p1, p2, ncol = 1, align = "hv", rel_heights = c(2, 1)) > ``` > > Best, > Ulrik > > On 2020-07-24 21:58, Bert Gunter wrote: >> ?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 at 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 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?| >>> > >>> > || >>> > >>> 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 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.That worked nicely but then the x-axis legend on the top graph needs to be blank. My recollection of trying this a few days ago was that I was left with blank space there... So, going back to arrangeGrob(), how would one set relative heights while maintaining aligned plot areas?