2012-11-02 12 views
25

Mam wykres, który jest generowany w ten sposób:Wyświetlanie większą lub równą znak

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") 

kontrolować etykiety osi x tak:

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

To działa, ale trzeba zmienić "> 80" etykieta do "≥80".

Jednak "≥ 80" jest wyświetlane jako "= 80".

Jak wyświetlić większy lub równy znak?

+0

można przejść z "> = 80"? –

+2

@JanDvorak, niestety nie. Jest przeznaczony do publikacji, więc musi wyglądać tak dobrze, jak to możliwe. Chciałem przejść z> 79, ale starsi autorzy konkretnie chcą ≥80 –

+6

czy próbowałeś 'expression (" "> = 80)'? Zobacz '? Plotmath'. – plannapus

Odpowiedz

23

Alternatywą do używania wyrażeń są znaki Unicode, w tym przypadku znak Unicode "WIĘKSZY-NIŻ RÓWNY" (U + 2265). Kopiowanie @ przykładem mnel za

.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 jest dobrą alternatywą, jeśli masz problemy z zapamiętaniem składni wyrażenie skomplikowany lub jeśli trzeba linebreaks wyrażenia, które nie pozwalają. Wadą jest to, czy konkretne znaki Unicode w ogóle działają, zależy od twojego urządzenia graficznego i wybranej czcionki.

+1

Problem: urządzenie 'pdf' nie obsługuje tego znaku i drukuje ... zamiast tego. Nie pracuję w "ggplot", więc może to nie jest problemem w tym pakiecie, ale kłopotliwe jest zapisywanie z bazy R. – MichaelChirico

+3

@MichaelChirico: Rozwiązanie: chyba że masz nieodparty powód, by użyć 'pdf', użyj' cairo_pdf zamiast tego. – otsaw

+0

możesz podać przykład tego, jak ważny może być taki powód? – MichaelChirico

17

można przekazać wyrażenie (łącznie phantom(...) udawać wiodącym >= ciągu label argument scale_x_discrete(...)

np

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

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

enter image description here

Zobacz ?plotmath aby uzyskać więcej informacji na temat tworzenia matematyczny wyrażenia i this pokrewne SO pytanie i odpowiedź

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

enter image description here

Powiązane problemy