[R] formatting expressoion(paste with line shift

Duncan Murdoch murdoch.duncan at gmail.com
Fri Feb 26 13:37:24 CET 2016


On 26/02/2016 7:08 AM, Troels Ring wrote:
> (pHi <- seq(1,8))
> #This gets formatted well but I want subscript for 2 in pCO2
>    plot(pHi,type="s",axes=FALSE,xlab="",lwd=4,
> main=paste("Theoretical experiment using SID = 0.13 M\n"," ATOT = 0.2 M,
> pKa = 6.8, and pCO[2] = 40"))
>
> #but this gets a very unhelpful format
>
> plot(pHi,type="s",axes=FALSE,xlab="",lwd=4,
> main=expression(paste("Theoretical experiment using ", pCO[2], "= 40,
> SID = 0.13 M\n"," ATOT = 0.2 M, and pKa = 6.8",
>    )))

As the docs say, control chars like \n are ignored in plotmath.  You can 
probably put something together using atop(), though the resizing will 
be problematic.  I'd suggest that you just use mtext() to write each of 
the three lines of output:

plot(pHi,type="s",axes=FALSE,xlab="",lwd=4,
main="")
mtext(expression(paste("Theoretical experiment using ", pCO[2], "= 
40")), 3, line = 3)
mtext("SID = 0.13 M", 3, line = 2)
mtext("ATOT = 0.2 M and pKa = 6.8", 3, line = 1)

You can move things around by changing the "line = " args, and add cex 
if you want bigger text, etc.

Duncan Murdoch



More information about the R-help mailing list