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=""))
splom, plotmath: how to add three lines of information with alignment?
3 messages · Marius Hofert, David Winsemius, Baptiste Auguie
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
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:
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
Hi,
Does this help?
library(gridExtra)
my.title = function(expressions) {
grid.table(expressions, parse=TRUE,
theme=theme.list(gpar.corefill = gpar(fill = NA, col = NA),
core.just = "left"))
}
e = expression(alpha,"text", italic(italic),
hat(beta), integral(f(x)*dx, a, b))
library(lattice)
xyplot(1~1, panel=function(...) my.title(e) )
HTH,
baptiste
On 19 April 2011 08:43, Marius Hofert <m_hofert at web.de> wrote:
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.