2016-03-08 13 views
5

Próbuję uzyskać indeks górny dla jednostek na osi Y za pomocą wyrażeń w polach powierzchni, do których odnosi się kilka postów. Przeglądałem wątki przy użyciu expression, a także here, ale to po prostu nie działa dla mnie. Oto co mam do tej pory:Superskryptowanie w ggplot2 przy użyciu plotowania na maszynie

ggplot(data.frame, aes(Region, Zmar_sh)) + 
    geom_boxplot() + xlab("Region") + 
    ylab(expression(paste("eelgrass shoot density", " (shoots/", expression(m[2])))) + 
    ggtitle(expression(paste(italic("Zostera marina")," shoot density in X Bay", sep = " "))) 

ggtitle wyrażenie działa, ale ja wciąż nie moje osi Y do odczytu „trawa morska gęstości pędów (pędów/m2)” z „2” jako indeks górny. czego mi brakuje?

Odpowiedz

4

Nie potrzebujesz drugiego expression(). Ponadto, m[2] podaje indeks dolny. Użyj m^2 dla indeksu górnego.

Oto przykład z wbudowaną ramą mtcars danych:

ggplot(mtcars, aes(wt, mpg)) + 
    geom_point() + 
    ylab(expression(paste("eelgrass shoot density", " (shoots/", m^2,")"))) 

W rzeczywistości, nawet nie trzeba używać paste. Zamiast tego można to zrobić:

ylab(expression(eelgrass~shoot~density~(shoots/m^2))) 

gdzie ~ jest znak „przestrzeń”. Jeśli wstawisz rzeczywiste spacje między wyrazami (bez użycia ~), pojawi się błąd. Jednakże, dla czytelności, można też to zrobić:

ylab(expression(eelgrass ~ shoot ~ density ~ (shoots/m^2))) 

co odpowiada powyższym kodzie, ponieważ przestrzenie są ignorowane dopóki ~ ma.

Każda z ylab wyrażeń powyżej daje następujące działki:

enter image description here

+0

Dzięki! Nie wiedziałem o tym użyciu ~. Wiedziałem, że to było coś małego, czego mi brakowało. I miał pan rację co do superscriptu, oczywiście. Pracuję również z indeksami dolnymi w moim kodzie i napisałem niepoprawny termin w moim pośpiechu, aby opublikować. – KVininska

Powiązane problemy