Hi Mary, I didn't see any answers to your post, but doing something like this is quite easy in base graphics. If you are still stuck, I may be able to suggest something.
Jim On Mon, Oct 10, 2022 at 6:05 PM Putt, Mary <mp...@pennmedicine.upenn.edu> wrote: > > > I have created several plots using the forestplot package and the link shown > here. > <https://cran.r-project.org/web/packages/forestplot/vignettes/forestplot.html > > Great package ! > Next step is to combine two plots into a single graphic. The code provided on > the link results in 'bleeding' of the graphics/text into each other. I don't > want to clip it as I need the text elements. I am guessing the problem > involves the combination of text and graphics in the 'plot'. I fooled around > with the original post and also did some hunting online but no luck Thanks in > advance. > library(foresplot) > data("dfHRQoL") > > #create individual forest plots for Sweden and Denmark > fp_sweden <- dfHRQoL |> > filter(group == "Sweden") |> > mutate(est = sprintf("%.2f", mean), .after = labeltext) |> > forestplot(labeltext = c(labeltext, est), > title = "Sweden", > clip = c(-.1, Inf), > xlab = "EQ-5D index", > new_page = FALSE) > > fp_denmark <- dfHRQoL |> > filter(group == "Denmark") |> > mutate(est = sprintf("%.2f", mean), .after = labeltext) |> > forestplot(labeltext = c(labeltext, est), > title = "Denmark", > clip = c(-.1, Inf), > xlab = "EQ-5D index", > new_page = FALSE) > > > > #now combine into a single plot using the web code; but this one bleeds into > each other > library(grid) > > ##### > #Put plots together using grid graphics > #Attempt 1 from website > > ##### > grid.newpage() > borderWidth <- unit(4, "pt") > width <- unit(convertX(unit(1, "npc") - borderWidth, unitTo = "npc", > valueOnly = TRUE)/2, "npc") > pushViewport(viewport(layout = grid.layout(nrow = 1, > ncol = 3, > widths = unit.c(width, > borderWidth, > width)) > ) > ) > pushViewport(viewport(layout.pos.row = 1, > layout.pos.col = 1)) > fp_sweden > upViewport() > pushViewport(viewport(layout.pos.row = 1, > layout.pos.col = 2)) > grid.rect(gp = gpar(fill = "grey", col = "red")) > upViewport() > pushViewport(viewport(layout.pos.row = 1, > layout.pos.col = 3)) > fp_denmark > upViewport(2) > > > #### > #Attempt 2 from website, still a problem. > #### > grid.newpage() > borderWidth <- unit(4, "pt") > width <- unit(convertX(unit(1, "npc") - borderWidth, unitTo = "npc", > valueOnly = TRUE)/2, "npc") > pushViewport(viewport(layout = grid.layout(nrow = 1, > ncol = 3, > widths = c(0.45, 0.1, 0.45)) > ) > ) > pushViewport(viewport(layout.pos.row = 1, > layout.pos.col = 1)) > fp_sweden > upViewport() > > pushViewport(viewport(layout.pos.row = 1, > layout.pos.col = 3)) > fp_denmark > upViewport(2) > > ### > #Attempt 3 converting to grobs and use patchwork > ### > library(ggplotify) > library(patchwork) > > fpd_grob <- grid2grob(print(fp_denmark)) > > p1 <- grid2grob(print(fp_denmark)) > p2 <- grid2grob(print(fp_sweden)) > p_both <- wrap_elements(p1) + wrap_elements(p2) > p_both > > #same problem with grid.arrange()**strong text** > > > > Mary Putt, PhD, ScD > Professor of Biostatistics > Department of Biostatistics, Epidemiology & Informatics > Pereleman School of Medicine > University of Pennsylvania > > 215-573-7020 > > [[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. ______________________________________________ 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.