Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use more than one expression in a row

I am new to R and I am trying to figure out, how to write something like "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?

like image 936
Nzuri Avatar asked May 07 '14 13:05

Nzuri


2 Answers

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.

enter image description here

like image 185
rbatt Avatar answered Oct 06 '22 04:10

rbatt


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: screenshot

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

like image 35
G. Grothendieck Avatar answered Oct 06 '22 06:10

G. Grothendieck