【问题标题】:Include text control characters in plotmath expressions在绘图表达式中包含文本控制字符
【发布时间】:2013-02-24 05:20:59
【问题描述】:

有没有办法获取文本字符串的控制字符,例如"\n" 代表 newline 在 plotmath 表达式中求值,反之亦然。在下面的例子中,我想结合:

  • 一些字符文本
  • 文本控制字符(换行符)
  • 替换变量名
  • 包括一个绘图表达式

阅读this question 后,我可以使用替代品获得大部分的成功,但newline 字符未被评估。我现在在兜圈子,把自己和plotmathparsebquotesubstitute 搞混了。在 help page for 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 )

【问题讨论】:

    标签: r graphics plot expression plotmath


    【解决方案1】:

    如果您使用网格图形,那么following grob 可以用于根据线的高度来分隔线,

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

    (使用 agstudy 的台词)

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • +1 谢谢。这是一个很好的直接解决方案。我什至不知道可以包含这样的 unicode 字符。如果可以在这里为接受的答案分配信用,我会的。谢谢!
      • 作为一个警告,一些平台/设备不能正确呈现所有 unicode 字符,所以你有 agstudy 和 baptiste 解决方案以及在它发生时依靠它是一件好事.有关其他提示,请参阅 this blog post
      • 啊,谢谢你的提醒。当我无法重新创建您的解决方案时,您可能会为我节省一些额外的未来头痛。再次感谢,感谢您的链接。
      【解决方案3】:

      如您所见,plotmath 不支持其中的换行符,但您可以使用mtextbquote 来编写每一行。例如,我创建了一个行列表:

      Lines <- list(bquote(paste( "Plot of " , phi , " of: "  , .(lab))),
                    bquote(paste("Functional form: " , .(form)))
      
      mtext(do.call(expression, Lines),side=3,line=1:0)
      

      【讨论】:

      • 您的解决方案非常完美!非常感谢您为我涉足bquote 和数学/文本表达式的泥潭! +1
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 2016-05-21
      • 1970-01-01
      • 2011-04-11
      相关资源
      最近更新 更多