Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"≥" or "≤" symbol in ggplot2 legend [duplicate]

I have a plot which is generated thus:

ggplot(dt.2, aes(x=AgeGroup, y=Prevalence)) + 
    geom_errorbar(aes(ymin=lower, ymax=upper), colour="black", width=.2) +
    geom_point(size=2, colour="Red")

I control the x axis labels like this:

scale_x_discrete(labels=c("0-29","30-49","50-64","65-79",">80","All")) +

This works but I need to change the ">80" label to "≥80".

However "≥80" is displayed as "=80".

How can I display the greater than or equal sign ?

like image 445
Robert Long Avatar asked Nov 02 '12 09:11

Robert Long


3 Answers

An alternative to using expressions is Unicode characters, in this case Unicode Character 'GREATER-THAN OR EQUAL TO' (U+2265). Copying @mnel's example

.d <- data.frame(a = letters[1:6], y = 1:6)

ggplot(.d, aes(x=a,y=y)) + geom_point() + 
    scale_x_discrete(labels = c(letters[1:5], "\u2265 80"))

Unicode is a good alternative if you have trouble remembering the complicated expression syntax or if you need linebreaks, which expressions don't allow. As a downside, whether specific Unicode characters work at all depends on your graphics device and font of choice.

like image 115
otsaw Avatar answered Sep 17 '22 19:09

otsaw


You can pass an expression (including phantom(...) to fake a leading >= within the label argument to scale_x_discrete(...)

for example

 .d <- data.frame(a = letters[1:6], y = 1:6)

 ggplot(.d, aes(x=a,y=y)) + geom_point() + 
    scale_x_discrete(labels = c(letters[1:5], expression(phantom(x) >=80))

enter image description here

See ?plotmath for more details on creating mathematical expressions and this related SO question and answer

like image 31
mnel Avatar answered Sep 16 '22 19:09

mnel


plot(5, ylab=expression("T ">="5"))

enter image description here

like image 43
Ven Yao Avatar answered Sep 16 '22 19:09

Ven Yao