How to use more than one expression in a row

本秂侑毒 提交于 2020-01-14 09:57:07

问题


I am new to R and I am trying to figure out, how to write something like "Hey guys, this is my plot for (\n)8 <=(less than or equal) x <= 10" in my plot-title.

I tried something like this:

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

This gives not exactly what I want but "8 (less or equal) x x (less or equal) 10", and those two expressions are printed in a line below the main title, (which is pretty cool) but in the same place, which is pretty much useless :)

I also tried:

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

What kind of does what I want (except the seperator seems to be completely ignored), but I cant add further text. Output: "8 (less or equal) xx (less or equal) 10".

And when I tried

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

the output irritated me completely: the title was: "xpaste (\n) x x <= 8 (\n) x z <= 10 (\n) x" (the (\n) is a line break, the other characters are exactly what is printed)

So is there a possibility to print expressions with more than one operator?


回答1:


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

plot(1:10, main=heyTitle)

Thanks to this answer for the atop() trick.

EDIT: Here is the figure

EDIT 2: borrowing from another answer by G. Grothendieck to use brackets to fix spacing.




回答2:


Try this:

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

On the windows() device it looks like this:

REVISED spacing and made 2nd line a bit larger to match first line. Added rbatt's atop idea. Further simplification.




回答3:


Expressions are a bit goofy, but here is how you can do that

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

To get a vector of expressions, you just use expression(exp1,exp2,exp3). No need to bother with c() or list(). And then to mix expressions with text, paste() often comes in handy. Without paste to combine them as one expression, they will plot on top of each other at the same location.



来源:https://stackoverflow.com/questions/23519142/how-to-use-more-than-one-expression-in-a-row

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!