[R] Need help putting histograms on the diagonal of a splom plot

Marc Paterno paterno at fnal.gov
Fri Aug 31 01:37:08 CEST 2007


Hello,

I am in need of help in putting histograms on the diagonal of a plot 
produced with splom().

The plot matrix I am trying to produce is to have standard scatterplots 
in the upper-left triangle, contour plots in the lower-right triangle, 
and histograms on the diagonal. I have a function that does the first 
two, but the histograms on the diagonal has been beyond my ability.

Here is my function:

require(lattice)
require(MASS)
my.plot = function(data)
{
   splom( ~data
        , lower.panel=function(x,y, ...)
          {
            xy=kde2d(x,y)
            xy.tr=con2tr(xy)
            panel.contourplot( xy.tr$x
                             , xy.tr$y
                             , xy.tr$z
                             , subscripts=seq(nrow(xy.tr))
                             , contour=TRUE
                             , region=TRUE
                             , labels = FALSE
                             , col.regions = terrain.colors
                             )
          }
         , upper.panel=function(x,y, ...)
          {
            panel.grid(-1,-1)
            panel.xyplot(x,y, cex=0.5)
          }
        #, diag.panel=function(x, ...)
        #  {
        #    panel.histogram(x, ...)
        #  }
        )
}

It can be called, for example, with:

   my.plot(subset(iris, select = Sepal.Length:Petal.Width))

(the subset is necessary to get rid of a variable that is a factor; my 
function can not deal with factors).

I have commented out my best guess at the code needed to produce the 
histograms along the diagonal, which fails.

Any guidance would be greatly appreciated.

best regards,
Marc



More information about the R-help mailing list