[R] combining pairs plot with other plots in one output

David Winsemius dwinsemius at comcast.net
Fri Oct 28 03:24:09 CEST 2011


On Oct 27, 2011, at 6:27 PM, Ulrich wrote:

> I would like to combine multiple plots (one of which is a pairs plot)
> in one output display:
>
>
> While this works well:
>
> layout(matrix(c(1,2,3,3,3,3), ncol=2, byrow=T))
> data <- matrix(rnorm(1000), ncol=10)
> boxplot(data)
> hist(data)
> plot(data)
>
>
>
> This doesn't:
> (because the pairs function seems to override the layout parameters?)

Right. But you have not specified what should go in what location.

>
> layout(matrix(c(1,2,3,3,3,3), ncol=2, byrow=T))
> data <- matrix(rnorm(1000), ncol=10)
> boxplot(data)
> hist(data)
> pairs(data)

You should look at the ?pairs page. It implements a panel.hist  
function that can be offered to diag.panel:

panel.hist <- function(x, ...)
  {
      usr <- par("usr"); on.exit(par(usr))
      par(usr = c(usr[1:2], 0, 1.5) )
      h <- hist(x, plot = FALSE)
      breaks <- h$breaks; nB <- length(breaks)
      y <- h$counts; y <- y/max(y)
      rect(breaks[-nB], 0, breaks[-1], y, col="cyan", ...)
  }

pairs(data, diag.panel=panel.hist, upper.panel=panel.smooth)


There is also a panel.pairs function in package lattice, but you would  
need to create your page layout with grid calls rather than base  
graphics.

-- 
David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list