Skip to content

drc, ggplot2, and gridExtra

4 messages · Ed Siefker, Eivind K. Dovik, William Michels +1 more

#
I have dose response data I have analyzed with the 'drc' package.
Using plot() works great.  I want to arrange my plots and source
data on a single page.  I think 'gridExtra' is the usual package for
this.

I could use plot() and par(mfrow=...), but then I can't put the source
data table on the page.

gridExtra provides grid.table() which makes nice graphical tables. It
doesn't work with par(mfrow=...), but has the function grid.arrange()
instead.

Unfortunately, grid.arrange() doesn't accept plot(). It does work with
qplot() from 'ggplot2'.  Unfortunately, qplot() doesn't know how to
deal with data of class drc.

I'm at a loss on how to proceed here.  Any thoughts?
#
On Fri, 18 May 2018, Ed Siefker wrote:

            
Hi,

If you grab the plots as grobs, you can arrange them using grid.arrange()

library(gridGraphics)
library(gridExtra)

grab <- function{
 	grid.echo()
 	grid.grab()
}

x <- rnorm(100, 1, 2)
y <- rnorm(100, 0, 0.5)

plot(x,y)
p <- grab()

a <- rnorm(20, 0, 1)
b <- rnorm(20, 1, 2)

plot(a, b)
q <- grab()

grid.arrange(p, q)


Best,
Eivind K. Dovik
Bergen, NO
4 days later
#
Hi, I was able to get Eivind's code to work by slight modification of
the "grab" function:

grab <- function() {
    grid.echo()
    grid.grab()
}

Best Regards,

W. Michels, Ph.D.
On Fri, May 18, 2018 at 9:56 AM, Eivind K. Dovik <hello at eivinddovik.com> wrote:
#
Hi

You need to be careful - you are grid.echo()ing (and then 
grid.grab()ing) on full-size pages and then redrawing in half-height 
pages, which is why you lose the x-axis labels in the result from 
grid.arrange().

This gives a better result (grid.echo() directly in the half-height 
viewports) ...

## grid.newpage()
pushViewport(viewport(y=.5, height=.5, just="bottom"))
grid.echo(function() plot(x, y), newpage=FALSE)
upViewport()
pushViewport(viewport(y=0, height=.5, just="bottom"))
grid.echo(function() plot(a, b), newpage=FALSE)
upViewport()

I have been looking for an example that would demonstrate what an 
echoGrob() function would be for and I think your grid.arrange() example 
might be what I need - thanks for posting this!

Paul
On 19/05/18 04:56, Eivind K. Dovik wrote: