Marius Hofert
2011-Apr-18 20:43 UTC
[R] 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=""))
David Winsemius
2011-Apr-18 21:07 UTC
[R] splom, plotmath: how to add three lines of information with alignment?
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
baptiste auguie
2011-Apr-18 22:03 UTC
[R] splom, plotmath: how to add three lines of information with alignment?
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.
>
baptiste auguie
2011-Apr-19 05:19 UTC
[R] splom, plotmath: how to add three lines of information with alignment?
On 19 April 2011 17:06, Marius Hofert <m_hofert at web.de> wrote:> Dear Baptiste, > > thanks for your answer. > Unfortunately, I get the error "Error using packet 1 invalid 'times' argument" when executing your code. Hmm... not sure where the problem is. >Oops, ? sorry, my mistake. For this code to work you'll need a more recent version of gridExtra than the one on CRAN. You can get it here: http://code.google.com/p/gridextra/ baptiste> Cheers, > > Marius > > On 2011-04-19, at 24:03 , baptiste auguie wrote: > >> 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. >>> > >
Marius Hofert
2011-Apr-19 19:52 UTC
[R] splom, plotmath: how to add three lines of information with alignment?
Dear guys,
I'm almost there... how can I fix the final problems?
Cheers,
Marius
PS: the "info" function is the one I will then try to call within
splom...
library(lattice)
library(gridExtra)
## trial 1
info <- function(a,b){
grid.table(as.expression(substitute(expression(alpha==alph, beta==bet),
list(alph=a, bet=b))),
parse=TRUE, # parse labels as expressions
theme=theme.list(
gpar.corefill=gpar(fill=NA, col=NA), # make bg transparent
core.just="left") # justification of labels
)
}
xyplot(1~1, panel=function(...) info(0.1, 0.5) )
## trial 2
info <- function(a,b){
grid.table(substitute(expression(alpha==alph, beta==bet),
list(alph=a, bet=b)),
parse=TRUE, # parse labels as expressions
theme=theme.list(
gpar.corefill=gpar(fill=NA, col=NA), # make bg transparent
core.just="left") # justification of labels
)
}
xyplot(1~1, panel=function(...) info(0.1, 0.5) )
On 2011-04-19, at 21:39 , David Winsemius wrote:
>
> On Apr 19, 2011, at 3:26 PM, baptiste auguie wrote:
>
>> I'm hoping to release a new version on CRAN soon; the broken state
of
>> R-forge and my poor understanding of R CMD CHECK results have often
>> made me postpone action indefinitely.
>
> In this case the errors were all mine. I suppose an even earlier stage
newbie than I might have problems not knowing that binary packages were not
available on r-forge or in recognizing (eventually) that loaded old packages
might prevent new versions from loading. Figuring out how to clear one package
from all the various places they can reside is beyond my pay grade, so I just
restart. Someone should write a flush.package function :-)
>
> --
> david.
>
>>
>> Best,
>>
>> baptiste
>>
>> On 19 April 2011 22:32, David Winsemius <dwinsemius at
comcast.net> wrote:
>>> I attempted , mostly with success to install following the
directions in
>>> r-forge webpage.
>>>
>>> I did add type="source", since generally r-forge does not
have compiled
>>> binaries and I did need to do it twice since I did not have `brew`
installed
>>> under 2.13.0(beta). The loading of help seemed to be a problem
which I
>>> initially assumed to be due to my being on a Mac running R
2.13.0(beta).
>>> When issuing ?gridExtra I get a help page that says: Error in
fetch(key) :
>>> internal error -3 in R_decompress1
>>>
>>> (I did not expect to ?gridExtra to work since I generally use
>>> help(package=gridExtra) for packages, but when i do that I get:
>>>> help(package=gridExtra)
>>> Error in formatDL(nm, txt, indent = max(nchar(nm, "w")) +
3) :
>>> incorrect values of 'indent' and 'width'
>>>
>>> Then I realized I was loading a new package on top of an old loaded
package
>>> so I restarted R and none of the help errors returned.
>>>
>>> Nice text table. Should make this task a lot easier that the
strategy I was
>>> about to suggest of doing some sort of superpose of multiple
panel.text
>>> calls.
>>>
>>> --
>>> David
>>>
>>>
>>> On Apr 19, 2011, at 1:19 AM, baptiste auguie wrote:
>>>
>>>> On 19 April 2011 17:06, Marius Hofert <m_hofert at
web.de> wrote:
>>>>>
>>>>> Dear Baptiste,
>>>>>
>>>>> thanks for your answer.
>>>>> Unfortunately, I get the error "Error using packet 1
invalid 'times'
>>>>> argument" when executing your code. Hmm... not sure
where the problem is.
>>>>>
>>>>
>>>> Oops, ? sorry, my mistake. For this code to work you'll
need a more
>>>> recent version of gridExtra than the one on CRAN. You can get
it here:
>>>> http://code.google.com/p/gridextra/
>>>>
>>>> baptiste
>>>>
>>>>> Cheers,
>>>>>
>>>>> Marius
>>>>>
>>>>> On 2011-04-19, at 24:03 , baptiste auguie wrote:
>>>>>
>>>>>> 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.
>>>>>>>
>>>>>
>>>>>
>>>>
>>>> ______________________________________________
>>>> 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.
>>>
>>> David Winsemius, MD
>>> West Hartford, CT
>>>
>>>
>
> David Winsemius, MD
> West Hartford, CT
>