Dear R-users,
I am trying to use the grid.text and expression functions to display
several character strings and plotmath text on a viewport. Some strings
can include a variable portion (PI.limits in the following example),
which I thought could be implemented by combining the bquote and the
expression functions. Unfortunately, my expressions do not seem to be
evaluated. I would greatly appreciate if somebody could tell me where my
mistake(s) is(are).
Thank you in advance
###### 8< #######
library(grid)
PI.limits <- c(0.1,0.9)
vp.ref <- c("raw data","median","median",
bquote(expression(paste(.(PI.limits[1]*100), " and ",
.(PI.limits[2]*100)^th,"
percentiles", sep=""))),
bquote(expression(paste(95^th,"confidence interval on
percentiles", sep=" "))),
bquote(expression(paste(95^th,"confidence interval on
percentiles", sep=" ")))
)
grid.newpage()
for (i in c(1,3,4,5,6)) {
grid.text(eval(vp.ref[i]), x=0.5,
y=unit(1,"npc")-unit(i,"lines"))
}
Hi,
Try this,
library(grid)
value <- c(0.1)
lab <- c("test",
expression(bquote(paste(.(value[1]*100), " and percentiles1",
sep=""))),
bquote(expression(.(value[1]*100)*" and percentiles2")),
bquote(paste(.(value[1]*100), " and percentiles3",
sep="")) )
grid.newpage()
grid.text(eval(lab[1]), x=0.5,
y=unit(1,"npc")-unit(1,"lines"))
grid.text(eval(lab[2]), x=0.5,
y=unit(1,"npc")-unit(2,"lines"))
grid.text(eval(lab[3]), x=0.5,
y=unit(1,"npc")-unit(3,"lines"))
grid.text(lab[4], x=0.5, y=unit(1,"npc")-unit(4,"lines"))
My preference goes for the last one.
HTH,
baptiste
2009/9/2 Sebastien Bihorel <sebastien.bihorel@cognigencorp.com>
> Dear R-users,
>
> I am trying to use the grid.text and expression functions to display
> several character strings and plotmath text on a viewport. Some strings can
> include a variable portion (PI.limits in the following example), which I
> thought could be implemented by combining the bquote and the expression
> functions. Unfortunately, my expressions do not seem to be evaluated. I
> would greatly appreciate if somebody could tell me where my mistake(s)
> is(are).
>
> Thank you in advance
>
>
> ###### 8< #######
>
> library(grid)
>
> PI.limits <- c(0.1,0.9)
>
> vp.ref <- c("raw data","median","median",
> bquote(expression(paste(.(PI.limits[1]*100), " and
",
> .(PI.limits[2]*100)^th,"
> percentiles", sep=""))),
> bquote(expression(paste(95^th,"confidence interval on
> percentiles", sep=" "))),
> bquote(expression(paste(95^th,"confidence interval on
> percentiles", sep=" ")))
> )
>
>
> grid.newpage()
>
> for (i in c(1,3,4,5,6)) {
> grid.text(eval(vp.ref[i]), x=0.5,
y=unit(1,"npc")-unit(i,"lines"))
> }
>
> ______________________________________________
> R-help@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 AuguiƩ
School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK
http://newton.ex.ac.uk/research/emag
______________________________
[[alternative HTML version deleted]]
Hi Baptiste, Thank for the help. One thing though that I found while transposing your syntax to my problem: lab must be of class expression for your syntax to work. For instance, if one replaces the second elements of the lab variables by a simple integer, lab is not more of class expression, and grid.text just displays strings of character. An easy way to bullet proof the code: use as.expression when building lab Thanks baptiste auguie wrote:> Hi, > > Try this, > > > library(grid) > > value <- c(0.1) > > lab <- c("test", > expression(bquote(paste(.(value[1]*100), " and percentiles1", > sep=""))), > bquote(expression(.(value[1]*100)*" and percentiles2")), > bquote(paste(.(value[1]*100), " and percentiles3", sep="")) ) > > > grid.newpage() > grid.text(eval(lab[1]), x=0.5, y=unit(1,"npc")-unit(1,"lines")) > grid.text(eval(lab[2]), x=0.5, y=unit(1,"npc")-unit(2,"lines")) > grid.text(eval(lab[3]), x=0.5, y=unit(1,"npc")-unit(3,"lines")) > grid.text(lab[4], x=0.5, y=unit(1,"npc")-unit(4,"lines")) > > My preference goes for the last one. > > HTH, > > baptiste > > 2009/9/2 Sebastien Bihorel <sebastien.bihorel at cognigencorp.com > <mailto:sebastien.bihorel at cognigencorp.com>> > > Dear R-users, > > I am trying to use the grid.text and expression functions to > display several character strings and plotmath text on a viewport. > Some strings can include a variable portion (PI.limits in the > following example), which I thought could be implemented by > combining the bquote and the expression functions. Unfortunately, > my expressions do not seem to be evaluated. I would greatly > appreciate if somebody could tell me where my mistake(s) is(are). > > Thank you in advance > > > ###### 8< ####### > > library(grid) > > PI.limits <- c(0.1,0.9) > > vp.ref <- c("raw data","median","median", > bquote(expression(paste(.(PI.limits[1]*100), " and ", > .(PI.limits[2]*100)^th," > percentiles", sep=""))), > bquote(expression(paste(95^th,"confidence interval > on percentiles", sep=" "))), > bquote(expression(paste(95^th,"confidence interval > on percentiles", sep=" "))) > ) > > > grid.newpage() > > for (i in c(1,3,4,5,6)) { > grid.text(eval(vp.ref[i]), x=0.5, y=unit(1,"npc")-unit(i,"lines")) > } > > ______________________________________________ > R-help at r-project.org <mailto: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 Augui? > > School of Physics > University of Exeter > Stocker Road, > Exeter, Devon, > EX4 4QL, UK > > http://newton.ex.ac.uk/research/emag > ______________________________ >