Hello, OK, now it's reproducible, thanks. align = "hv" works like I had suggested. The full code is now library(ggplot2) 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 * 1000)) + geom_point() cowplot::plot_grid(s, v, align = "hv", nrow = 2, rel_heights = 2:1) Also, I have been failing to comply to the posting guide and never posted the output of sessionInfo() R version 4.0.2 (2020-06-22) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 10 x64 (build 18362) Matrix products: default locale: [1] LC_COLLATE=Portuguese_Portugal.1252 LC_CTYPE=Portuguese_Portugal.1252 [3] LC_MONETARY=Portuguese_Portugal.1252 LC_NUMERIC=C [5] LC_TIME=Portuguese_Portugal.1252 attached base packages: [1] stats???? graphics? grDevices utils???? datasets? methods base other attached packages: [1] cowplot_1.0.0 ggplot2_3.3.2 tidyr_1.1.0?? dplyr_1.0.0 sos_2.0-0 [6] brew_1.0-6 loaded via a namespace (and not attached): ?[1] Rcpp_1.0.4.6???? magrittr_1.5???? tidyselect_1.1.0 munsell_0.5.0 ?[5] colorspace_1.4-1 R6_2.4.1???????? rlang_0.4.6 fansi_0.4.1 ?[9] tools_4.0.2????? grid_4.0.2?????? gtable_0.3.0 utf8_1.1.4 [13] cli_2.0.2??????? withr_2.2.0????? ellipsis_0.3.1 digest_0.6.25 [17] assertthat_0.2.1 tibble_3.0.1???? lifecycle_0.2.0 crayon_1.3.4 [21] farver_2.0.3???? purrr_0.3.4????? vctrs_0.3.1 glue_1.4.1 [25] labeling_0.3???? compiler_4.0.2?? pillar_1.4.4 generics_0.0.2 [29] scales_1.1.1???? pkgconfig_2.0.3 Hope this helps, Rui Barradas ?s 19:13 de 25/07/2020, H escreveu:> On 07/25/2020 12:36 PM, Rui Barradas wrote: >> 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. >> > The easiest demonstration would be to replace: > > v <- ggplot(data = subset(iris, Species == 'setosa'), aes(Sepal.Length, Sepal.Width)) + geom_point() > > with: > > v <- ggplot(data = subset(iris, Species == 'setosa'), aes(Sepal.Length, Sepal.Width * 1000)) + geom_point() > > I am looking to not only being able to set relative heights of rows (as your code correctly does) but also have the plot areas aligned. > > ______________________________________________ > 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/25/2020 03:01 PM, Rui Barradas wrote:> Hello, > > OK, now it's reproducible, thanks. > align = "hv" works like I had suggested. > > The full code is now > > library(ggplot2) > 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 * 1000)) + geom_point() > > cowplot::plot_grid(s, v, align = "hv", nrow = 2, rel_heights = 2:1) > > > Also, I have been failing to comply to the posting guide and never posted the output of > > sessionInfo() > R version 4.0.2 (2020-06-22) > Platform: x86_64-w64-mingw32/x64 (64-bit) > Running under: Windows 10 x64 (build 18362) > > Matrix products: default > > locale: > [1] LC_COLLATE=Portuguese_Portugal.1252 LC_CTYPE=Portuguese_Portugal.1252 > [3] LC_MONETARY=Portuguese_Portugal.1252 LC_NUMERIC=C > [5] LC_TIME=Portuguese_Portugal.1252 > > attached base packages: > [1] stats???? graphics? grDevices utils???? datasets? methods base > > other attached packages: > [1] cowplot_1.0.0 ggplot2_3.3.2 tidyr_1.1.0?? dplyr_1.0.0 sos_2.0-0 > [6] brew_1.0-6 > > loaded via a namespace (and not attached): > ?[1] Rcpp_1.0.4.6???? magrittr_1.5???? tidyselect_1.1.0 munsell_0.5.0 > ?[5] colorspace_1.4-1 R6_2.4.1???????? rlang_0.4.6 fansi_0.4.1 > ?[9] tools_4.0.2????? grid_4.0.2?????? gtable_0.3.0 utf8_1.1.4 > [13] cli_2.0.2??????? withr_2.2.0????? ellipsis_0.3.1 digest_0.6.25 > [17] assertthat_0.2.1 tibble_3.0.1???? lifecycle_0.2.0 crayon_1.3.4 > [21] farver_2.0.3???? purrr_0.3.4????? vctrs_0.3.1 glue_1.4.1 > [25] labeling_0.3???? compiler_4.0.2?? pillar_1.4.4 generics_0.0.2 > [29] scales_1.1.1???? pkgconfig_2.0.3 > > > Hope this helps, > > Rui Barradas > > ?s 19:13 de 25/07/2020, H escreveu: >> On 07/25/2020 12:36 PM, Rui Barradas wrote: >>> 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. >>> >> The easiest demonstration would be to replace: >> >> v <- ggplot(data = subset(iris, Species == 'setosa'), aes(Sepal.Length, Sepal.Width)) + geom_point() >> >> with: >> >> v <- ggplot(data = subset(iris, Species == 'setosa'), aes(Sepal.Length, Sepal.Width * 1000)) + geom_point() >> >> I am looking to not only being able to set relative heights of rows (as your code correctly does) but also have the plot areas aligned. >> >> ______________________________________________ >> 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. > >Just tried it and it works in this example, however, with my two plots where the top plot does not have an x-axis legend the code above still reserves room for the legend which now shows up as a large empty space... This is harder than I thought. I wonder if going back to the grobs would offer a better solution? The problem is that diving into the underlying code and understanding which variables to change is hard, there are /lots/ of variables...
On 07/25/2020 03:05 PM, H wrote:> On 07/25/2020 03:01 PM, Rui Barradas wrote: >> Hello, >> >> OK, now it's reproducible, thanks. >> align = "hv" works like I had suggested. >> >> The full code is now >> >> library(ggplot2) >> 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 * 1000)) + geom_point() >> >> cowplot::plot_grid(s, v, align = "hv", nrow = 2, rel_heights = 2:1) >> >> >> Also, I have been failing to comply to the posting guide and never posted the output of >> >> sessionInfo() >> R version 4.0.2 (2020-06-22) >> Platform: x86_64-w64-mingw32/x64 (64-bit) >> Running under: Windows 10 x64 (build 18362) >> >> Matrix products: default >> >> locale: >> [1] LC_COLLATE=Portuguese_Portugal.1252 LC_CTYPE=Portuguese_Portugal.1252 >> [3] LC_MONETARY=Portuguese_Portugal.1252 LC_NUMERIC=C >> [5] LC_TIME=Portuguese_Portugal.1252 >> >> attached base packages: >> [1] stats???? graphics? grDevices utils???? datasets? methods base >> >> other attached packages: >> [1] cowplot_1.0.0 ggplot2_3.3.2 tidyr_1.1.0?? dplyr_1.0.0 sos_2.0-0 >> [6] brew_1.0-6 >> >> loaded via a namespace (and not attached): >> ?[1] Rcpp_1.0.4.6???? magrittr_1.5???? tidyselect_1.1.0 munsell_0.5.0 >> ?[5] colorspace_1.4-1 R6_2.4.1???????? rlang_0.4.6 fansi_0.4.1 >> ?[9] tools_4.0.2????? grid_4.0.2?????? gtable_0.3.0 utf8_1.1.4 >> [13] cli_2.0.2??????? withr_2.2.0????? ellipsis_0.3.1 digest_0.6.25 >> [17] assertthat_0.2.1 tibble_3.0.1???? lifecycle_0.2.0 crayon_1.3.4 >> [21] farver_2.0.3???? purrr_0.3.4????? vctrs_0.3.1 glue_1.4.1 >> [25] labeling_0.3???? compiler_4.0.2?? pillar_1.4.4 generics_0.0.2 >> [29] scales_1.1.1???? pkgconfig_2.0.3 >> >> >> Hope this helps, >> >> Rui Barradas >> >> ?s 19:13 de 25/07/2020, H escreveu: >>> On 07/25/2020 12:36 PM, Rui Barradas wrote: >>>> 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. >>> The easiest demonstration would be to replace: >>> >>> v <- ggplot(data = subset(iris, Species == 'setosa'), aes(Sepal.Length, Sepal.Width)) + geom_point() >>> >>> with: >>> >>> v <- ggplot(data = subset(iris, Species == 'setosa'), aes(Sepal.Length, Sepal.Width * 1000)) + geom_point() >>> >>> I am looking to not only being able to set relative heights of rows (as your code correctly does) but also have the plot areas aligned. >>> >>> ______________________________________________ >>> 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. >> > Just tried it and it works in this example, however, with my two plots where the top plot does not have an x-axis legend the code above still reserves room for the legend which now shows up as a large empty space... > > This is harder than I thought. I wonder if going back to the grobs would offer a better solution? The problem is that diving into the underlying code and understanding which variables to change is hard, there are /lots/ of variables... >Returning to this problem. Given the plots below where the plot areas are now nicely aligned, is it possible to change the heights to eg relative heights being 2:1? 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 * 1000)) + geom_point() g2<-ggplotGrob(s) g3<-ggplotGrob(v) g<-rbind(g2, g3, size = "first") g$widths<-unit.pmax(g2$widths, g3$widths) grid.newpage() grid.draw(