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

David Winsemius dwinsemius at comcast.net
Mon Apr 18 23:07:07 CEST 2011

```On Apr 18, 2011, at 4:43 PM, Marius Hofert wrote:

> Dear expeRts,
>
> I would like to create a scatter plot matrix with splom(). The lower
> panel should
> 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:

Try instead:   ( As far as I can tell there is no <newline> in
plotmath.)

> plot(0,0)
> title(main=expression(alpha==1), line=3)
> title(main=expression(beta==2), line=2)
> title(main=expression(gamma==3), line=1)

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

--
David Winsemius, MD
West Hartford, CT

```