在plotmath表达式中包含文本控制字符

时间:2013-03-08 15:45:01

标签: r graphics plot expression plotmath

有没有办法获取文本字符串的控制字符,例如"\n" newline在plotmath表达式中进行评估,反之亦然。在以下示例中,我想结合使用:

  • 一些字符文字
  • 文字控制字符(换行符)
  • 替换变量名称
  • 包括plotmath表达式

阅读this question后,我可以通过替换获得大部分路径,但不会评估newline字符。我现在正在绕圈子,并将自己与plotmathparsebquotesubstitute混为一谈。在help page为plotmath,它说

  

与普通绘图不同,控制字符(例如\ n)不会在plotmath中的字符串中解释。

这是否意味着它真的不可能?

lab = "some data"
form = "Exponential"
x = 1:10
y = x^2


plot( x , y , type = "b" )
title( main = substitute( paste( "Plot of " , phi , " of: "  , lab , "\nFunctional form: " , form ) , list(lab = lab , form = form ) ) , adj = 0 )

enter image description here

3 个答案:

答案 0 :(得分:10)

正如您认为plotmath不支持新内容,但您可以mtext使用bquote来编写每一行。例如,我创建了一个行列表:

Lines <- list(bquote(paste( "Plot of " , phi , " of: "  , .(lab))),
              bquote(paste("Functional form: " , .(form)))

mtext(do.call(expression, Lines),side=3,line=1:0)

enter image description here

答案 1 :(得分:4)

如果你使用网格图形,那么following grob可以根据它们的高度来划分线条,

library(devtools)
source_gist(2732693)
grid.expr(as.expression(Lines))

(使用agstudy的行)

答案 2 :(得分:3)

为了完整起见,这是使用unicode和没有表达式的另一种解决方案(改编自herehere):

plot(x, y, type="b")
title(main=paste("Plot of \u03A6 of:", lab, "\nFunctional form:", form), adj=0)

enter image description here