2013-02-28 1 views
36

chcę wykreślić etykietę, która wygląda tak w ggplot2: Value is $\sigma$, R^{2} = 0.6 gdzie Value is jest zwykła czcionka, $\sigma$ jest greckim małe sigma list i R^{2} = 0.6 pojawia się jako R z superscript 2, po którym następuje znak równości (=), a następnie 0.6. Jak można tego używać w ggplot factor s i w argumentach takich rzeczy jak xlab,ylab z R? dzięki.umieszczenie symboli matematycznych i dolnych zmieszane z regularnych litery R/ggplot2

Odpowiedz

45

coś takiego:

g <- ggplot(data=data.frame(x=0,y=0))+geom_point(aes(x=x,y=y)) 
g+ xlab(expression(paste("Value is ", sigma,",", R^{2},'=0.6'))) 

EDIT

Inną opcją jest użycie annotate z parse=T:

g+ annotate('text', x = 0, y = 0, 
     label = "Value~is~sigma~R^{2}==0.6 ",parse = TRUE,size=20) 

enter image description here

EDYCJA

Rozwiązanie paste może być przydatne, jeśli stała 0,6 jest obliczana podczas drukowania.

r2.value <- 0.90 
g+ xlab(expression(paste("Value is ", sigma,",", R^{2},'=',r2.value))) 
+2

Jeśli chcesz, aby sigma próbowała używać '\ u03c3' –

+0

Bad Maca? Spróbuj z 'x = 0.25, y = 0.25'. Usuwanie mojego błędnego komentarza o niepotrzebowaniu 'parse = TRUE'. –

+0

@DWin ok. Mam takie samo zachowanie z 'x = 0.25, y = 0.25'. Ale z parse = F, otrzymuję sigma z tym \ u03c3, ale także z ~ – agstudy

30

Nieco bardziej proste niż pasty() może być:

g <- ggplot(data=data.frame(x=0,y=0))+geom_point(aes(x=x,y=y)) 
g+ xlab(expression(Value~is~sigma~R^{2}==0.6)) 

Ogólnie paste i wszystkie te powiązane-cytaty nie są potrzebne w przypadku korzystania z odpowiednich spójników plotmath. Nawet jeśli chcesz, aby tekst, który w przeciwnym razie tworzyłby grecką literę, wystarczy umieścić go w cudzysłowach po jednym z każdej strony: * lub ~. Jednym z problemów z oferowaniem paste nowym użytkownikom wyrażenia plotmath jest to, że uważają, że jest taki sam jak paste w pozostałej części języka.

+0

Myślę, że argument "etykiety" do adnotacji przyjmuje tryb znakowy. Możesz sprawdzić, jaka wartość Unicode "sigma" może mieć w zainstalowanej czcionce bezszeryfowej. –

+1

Nota boczna dla użytkowników krat: To rozwiązanie działa również w przypadku sieci kratowej. .i.e 'xyplot (y ~ x, dat = data.frame (x = 0, y = 0), xlab = wyrażenie (wartość ~ wynosi ~ sigma ~ R^{2} == 0,6))' – agstudy