expression + variable value + normal text in plot maintitle
Asked Answered
K

1

22

i want to achieve an title in R plot as the following:

title = "The significance level you entered is alpha = 0.05 which is often used."

In order to get this I split the whole text in little parts, so i finally can write

title = paste(part1,part2,part3,part4)

The parts are:

part1 = "The significance level you entered is"

part2 = expression(alpha)

part3 = object@attribute

part4 = " which is often used."

So I'm not able to combine these parts to get my result.

Either the symbol is shown correctly and the part 3 is printed as object@attribute (ant not his value) or the symbol is not shown and the value of the object is printed correctly.

I used ?expressionand ?printalready, but didn't get it

The examples provided in ?plotmath didn't match my case either.

Katy answered 11/12, 2013 at 23:30 Comment(3)
Hi before I started this topic I had a look at this thread. But the difference here ist, that i want concatenate symbols, text and value of a variable. The concatenation ist not that problem, but the evaluating of my object attribute. It is always printed out as object@attribute instead of 0.05.Katy
1. In my opinion, this is a clearly stated legitimate question. 2. In general, the system of plotmath/expression/bquote usage in R is quite difficult even for experienced users. No single existing SO question on the topic is definitive. 3. Four of the five users who voted to close have zero [r] questions or answers.Precious
Wow, this was inappropriately marked as a duplicate! The so called duplicate is basically irrelevant to this question. This question is about adding a variable's value to a title not just an 'expression'.Tribesman
P
31

One solution is to use bquote(). Use .() within bquote to get the value of objects or expressions. Here is one example of how that might work:

obj = list(foo=0, bar=99, alpha=0.05)
plot(1:10, main=bquote("Significance level is" ~ alpha == .(obj$alpha)))

The tilde ~ seems necessary here to convince bquote to treat alpha as a plotmath expression.

enter image description here

Precious answered 12/12, 2013 at 1:28 Comment(3)
If you want to use this for a geom_label in ggplot2, you have to wrap this in as.expression: as.expression(bquote("Significance level is" ~ alpha == .(mean(x)))).Tournament
In my case, I need to start the line with ^1 - superscript number, which bquote seems to dislike. Would be interested in any suggestions (expression(""^1") is not a solution, since I want to put the content of text_in_var` and it seems the latter is not easy to do with expressionKnobloch
@JelenaČuklina, try something like this: x <- 4; plot(1:10, main=bquote(` `^ .(1 - x) ~ "and some text."))Precious

© 2022 - 2024 — McMap. All rights reserved.