【问题标题】:Expression and new line in plot labels [duplicate]绘图标签中的表达式和新行[重复]
【发布时间】:2013-12-31 05:00:27
【问题描述】:

我想为我的图形标签添加一些下标和上标。我试过expression,但它不能像我希望的那样使用新行(\n)。我尝试使用paste 修复它,但它不起作用。以下是我的一些尝试:

par(mfcol=c(1,3))
plot(1,1,main=expression("first line \n second line x"^2))
plot(1,1,main=expression(paste("first line \n second line", "x"^2)))
plot(1,1,main=paste("first line \n second line", expression("x"^2)))

它产生:

在前两张图片中,第二行没有很好地居中,在第三张中,上标失败了。如何同时获得居中线和下标/上标?

【问题讨论】:

标签: r plot expression newline


【解决方案1】:

您可以在表达式中引入换行符:

bquote(atop("first line",
            "second line" ~ x ^ 2))

(我在这里使用bquote 而不是expression - 在这种情况下都可以使用。)

执行demo(plotmath) 以获取更多信息并查看atop 的文档。

boxplot 显然在解释其标题中的表达式时遇到了一些麻烦。一个简单的解决方法是单独绘制标题:

boxplot(data, main = '')
title(bquote(atop("first line", "second line" ~ x ^ 2)))

【讨论】:

  • 这很奇怪:这个解决方案适用于plot,但不适用于boxplot。我收到一条消息,说没有名为“atop”的函数。
  • @MartaCz-C 很好奇,你是对的。但是,修复非常简单——请参阅更新的答案。
【解决方案2】:

一个快速的解决方案是在单词“first”之前添加一些空格。

由于plotmath 不支持换行,您可以使用mtext 来一一创建您的行,如下所示:

plot(1,1)
exp <- 2
Lines <- list(bquote("first line"),bquote("second line x"^2))
mtext(do.call(expression, Lines),side=3,line=1:0)

【讨论】:

  • 我想我以前见过这个somewhere...! (这仍然是一个很好的答案)
  • @SimonO101 谢谢,很好 :)
猜你喜欢
  • 2014-09-01
  • 2017-12-24
  • 2014-06-16
  • 2020-06-19
  • 2013-01-07
  • 2012-01-26
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
相关资源
最近更新 更多