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 >>>>>> <age...@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 <age...@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 <age...@meddatainc.com >>>>>>>> <mailto:age...@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 <age...@meddatainc.com >>>>>>>> <mailto:age...@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@r-project.org <mailto:R-help@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@r-project.org <mailto:R-help@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@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@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@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@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@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... ______________________________________________ R-help@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.