[R] plotmath: how to create a vector of expressions?
Marius Hofert
m_hofert at web.de
Sun Feb 27 23:59:19 CET 2011
Dear Peter,
perfect *as usual*, many thanks!
Cheers,
Marius
On 2011-02-26, at 17:55 , Peter Ehlers wrote:
> On 2011-02-25 15:57, Marius Hofert wrote:
>> Dear expeRts,
>>
>> I would like to use LaTeX-like symbols in keys via plotmath. Below is a minimal
>> example. I get:
>> Error in fun(key = list(x = 0.5, y = 0.8, text = list(list(expression(paste("(", :
>> first component of text must be vector of labels
>> What's wrong? How can I create the required vector (of expressions)?
>>
>> Cheers,
>>
>> Marius
>>
>> library(lattice)
>> val<- matrix(1, nrow = 10, ncol = 3)
>> nplot<- 10
>>
>> labs<- sapply(1:3, function(i) substitute(expression(paste("(",i,"), ",l==len,"mm",sep="")), list(len=2*i)))
>> myplot<- xyplot(0~0,
>> panel=function(...){
>> for(i in 1:3){
>> panel.xyplot(1,val[,i],type="l")
>> panel.text(2,val[nplot,i],label=paste("(",i,")",sep=""))
>> }
>> },
>> key = list(x=0.5,y=0.8,text=list(labs),
>> align=TRUE,transparent=TRUE))
>> myplot
>
> Try this:
>
> labs <- vector("expression", 3)
> for(i in 1:3) labs[i] <-
> substitute(expression(
> group("(", k, ")") * "," ~~ l == len ~ italic("mm")
> ),
> list(len = 2*i, k=i)
> )[2]
>
> The idea is to create an expression vector and then
> fill its components appropriately. We need the second
> component of the substitute call.
> (I put in the 'italic' just for fun.)
>
> Maybe there's a better way, but I don't know it.
>
> Peter Ehlers
More information about the R-help
mailing list