【问题标题】:Plot main title in two lines在两行中绘制主标题
【发布时间】:2012-12-17 15:53:14
【问题描述】:

我想把情节的标题分成两行,但这不起作用,为什么?我怎样才能让它发挥作用?

CVal<-1 
SumEpsVal<-2 
plot(1:10, main=bquote(paste("C=", .(CVal), " \n ", sum(xi), "=", .(SumEpsVal) )))

这里可行:

plot(1:10, main=paste("C=1", "\n", "SumXi=2"))

我猜 bquote 做错了什么...(查找 ?bquote) 我试图改变 bqoute 中的环境(where-argument),但我不知道该采用哪个环境。

顺便说一句:

plot(1:10, main=bquote(paste("C=", .(CVal), "bla \n ", sum(xi), "=", .(SumEpsVal) )))

用“bla”让一些东西变得疯狂。

【问题讨论】:

    标签: r plotmath


    【解决方案1】:

    就我个人而言,我会按照已经建议的那样使用 mtext。但是如果你真的希望它是单线的,你可以通过使用atop来“欺骗”bquote

    plot(1:10, main=
      bquote(atop(paste("C=",.(CVal)), paste(sum(xi),"=",.(SumEpsVal)))))
    

    它甚至可以将两条线整齐地对齐到中心。

    【讨论】:

      【解决方案2】:

      根本问题是 plotmath 不支持在 要输出的表达式。

      Control characters (e.g. \n) are not interpreted in character strings in plotmath, 
        unlike normal plotting.
      

      您确实需要单独创建和输出每一行。

      例如:

      Lines <- list(bquote(paste("C=", .(CVal))),
                    bquote(paste(sum(xi), "=", .(SumEpsVal))))
      

      现在输出每一行列表中的文本转换为表达式do.call

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

      【讨论】:

        【解决方案3】:

        实现此目的的一种方法是使用mtext 在主标题下添加额外的一行,如下所示:

        plot(1:10, main=bquote(paste("C=", .(CVal))))
        mtext(bquote(paste(sum(xi), "=", .(SumEpsVal) )),side=3,line=0)
        

        可能有更漂亮的解决方案,但也许这足以满足您的需求。

        【讨论】:

          猜你喜欢
          • 2021-06-18
          • 1970-01-01
          • 2012-06-25
          • 1970-01-01
          • 1970-01-01
          • 2018-01-16
          • 2016-03-22
          • 1970-01-01
          相关资源
          最近更新 更多