Reputation: 1971
Text can be added to a ggplot
object using annotate()
. However, I can't figure out how to print an asterisk, since, so far as I understand, the asterisk is used in parsing.
Here is an example. Suppose I ran a nonparametric test, and I want to print the test statistic with its significance level measured in stars. Unfortunately, this does not work:
library(ggplot2)
ggplot(iris, aes(Sepal.Length, Sepal.Width, color=Species)) +
geom_point() +
annotate('text', x = 7, y = 4, label="chi^2 == 2.50***", parse=TRUE)
Error in parse(text = as.character(lab)) : <text>:1:16: unexpected '*'
1: chi^2 == 2.50***
Defining the label outside the plot object - e.g. lab <- paste0("chi^2 == 2.5","***", sep="")
, then calling annotate('text', x = 7, y = 4, label=lab, parse=TRUE)
- does not work either.
Is it possible to use the asterisk with annotate()
?
Edit Sorry, I neglected to mention that I want the Greek letter to be compiled. Ideally the text would appear as $$chi^2 = 2.50***$$
Upvotes: 5
Views: 3818
Reputation: 18691
Using a combination of double and single quotes does the trick:
library(ggplot2)
ggplot(iris, aes(Sepal.Length, Sepal.Width, color=Species)) +
geom_point() +
annotate('text', x = 7, y = 4, label='chi^2 == "2.50***"', parse=TRUE)
You can use single quotes for label =
, and double quotes for strings you don't want annotate
to parse. Anything outside the double quotes but inside the single quotes will be parsed.
Upvotes: 6