如何连续使用多个表达式

时间:2014-05-07 13:25:29

标签: r plot expression plotmath

我是R的新手,我想弄明白,怎么写像“嘿伙计们,这是我的情节(\ n)8&lt; =(小于或等于)x <= 10”在我的剧情标题中。

我试过这样的事情:

plot(1:10, main="Hey, guys, this is my plot for \n")
mtext(c(expression(8 <= x),expression(x <= 10), side=3)

这并不是我想要的,而是“8(小于或等于)xx(小于或等于)10”,这两个表达式打印在主标题下面的一行中(这很酷)但在同一个地方,这几乎没用:)

我也尝试过:

plot(1:10, main=bquote(paste(8 <= x, x <= 10, sep=",")))

我想要的是什么(除了分隔符似乎被完全忽略),但我无法添加更多文本。输出:“8(小于或等于)xx(小于或等于)10”。

当我尝试

plot(1:10, main=paste("x",bquote(paste(x <= 8,z <= 10,sep=" ")),sep=" "))

输出完全激怒了我:标题是:“xpaste(\ n)xx&lt; = 8(\ n)xz&lt; = 10(\ n)x”((\ n)是换行符,其他字符正是印刷的内容)

那么是否有可能使用多个运算符打印表达式?

3 个答案:

答案 0 :(得分:4)

heyTitle <- bquote(atop(
    "Hey, guys, this is my plot for",
    {8 <=x}*phantom()<=10
    ))

plot(1:10, main=heyTitle)

感谢atop() trick {{1}}。

编辑:这是图

编辑2:从this answer借用来使用括号来修复间距。

enter image description here

答案 1 :(得分:4)

试试这个:

 plot( 1:10, main = ~ bold(atop("Hey, guys, this is my plot for", {"8" <= x} <= "10")))

windows()设备上,它看起来像这样: screenshot

已修改间距,并使第二行稍微大一点以匹配第一行。添加了rbatt的atop想法。进一步简化。

答案 2 :(得分:3)

表达式有点傻,但这是你如何做到的

plot(1:10, main="Hey, guys, this is my plot for \n")
mtext(expression(paste(8 <= x,", ",x <= 10)), side=3)

要获取表达式向量,只需使用expression(exp1,exp2,exp3)即可。无需为c()list()而烦恼。然后将表达式与文本混合,paste()通常会派上用场。如果没有paste将它们组合为一个表达式,它们将在同一位置彼此重叠。