[R] splom, plotmath: how to add three lines of information with alignment?

From: Marius Hofert <m_hofert_at_web.de>
Date: Mon, 18 Apr 2011 22:43:01 +0200


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=""))

______________________________________________
R-help_at_r-project.org mailing list
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. Received on Mon 18 Apr 2011 - 20:47:50 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Tue 19 Apr 2011 - 20:10:31 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive