Skip to content
Back to formatted view

Raw Message

Message-ID: <A059B2A9-32B6-471A-88F4-1A948941A81A@web.de>
Date: 2011-04-18T20:43:01Z
From: Marius Hofert
Subject: splom, plotmath: how to add three lines of information with alignment?

Dear expeRts,

I would like to create a scatter plot matrix with splom(). The lower panel should 
contain some additional information about the samples shown in the upper panel 
plot, see the splom() call below. Now two questions came up:
(1) The lower panels show "tau" and "alpha" on top of each other. How can I plot 
*three* expressions on top of each other? I tried several approaches (see the trials below),
but couldn't manage to get this to work properly.
(2) Is there the possibility to plot the two/three lines (containing "tau = ..", "alpha = ..")
aligend according to the equality sign?

Cheers,

Marius


library(lattice)

f <- function(i,j) i+j

U <- matrix(runif(3000), ncol=3)

splom(U, 
      superpanel=function(z, ...){
          tau <- cor(U, method="kendall")
          df=data.frame(rows=as.vector(row(tau)), columns=as.vector(col(tau)),
          vals=as.vector(tau)) # data frame of row indices, column indices, and tau values
          df=subset(df,columns<rows) # subset for lower left triangle
          with(df,{
              panel.text(x=rows, y=columns, 
                         labels=as.expression(unlist(lapply(1:length(vals), 
                             function(i) substitute(atop(tau==tau.,alpha==alpha.),
                                                    list(tau.=vals[i], alpha.=round(vals[i],3)) ) ))) )
          })
          panel.pairs(z, upper.panel=panel.splom, lower.panel=function(...){}, ...)
      })

## some minimal "trial" examples:
plot(0,0,main=paste("alpha=1","\n","beta=2","\n","gamma=3",sep=""))
plot(0,0,main=expression(atop(atop(alpha==1, beta==2), gamma==3)))
plot(0,0,main=paste(expression(alpha==1),"\n",expression(beta==2),"\n",
         expression(gamma==3), sep=""))
plot(0,0,main=substitute(paste(alpha==1,x,beta==2,x,
         gamma==3, sep=""), list(x="\n")))
plot(0,0,main=expression(cat(alpha==1, "\n", beta==2, "\n", gamma==3, sep="")))
plot(0,0,main=cat(expression(alpha==1), "\n", expression(beta==2), "\n", 
         expression(gamma==3), sep=""))