2016-03-08 10 views
5

Ich versuche, ein Exponent für Einheiten meiner y-Achse mit plotmath Ausdrücke in mehreren Posts zu erhalten. Ich habe Threads auf die Verwendung von expression und auch here geschaut, aber es funktioniert einfach nicht für mich. Hier ist, was ich bisher:Superscripting in ggplot2 mit plotmath

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

Der ggtitle Ausdruck funktioniert, aber ich bin immer noch nicht meine y-Achse bekommen „Seegras-Shooting Dichte (Trieb/m2)“ mit den „2“ als Exponenten zu lesen. Was vermisse ich?

Antwort

4

Sie brauchen nicht die zweite expression(). Auch m[2] gibt einen Index. Verwenden Sie m^2 für einen hochgestellten.

Hier ist ein Beispiel mit den eingebauten in mtcars Datenrahmen:

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

In der Tat, Sie brauchen nicht einmal paste zu verwenden. Stattdessen könnten Sie dies tun:

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

wo ~ der „Raum“ Charakter ist. Wenn Sie zwischen die Wörter tatsächlich Leerzeichen einfügen (ohne ~ zu verwenden), erhalten Sie einen Fehler. Doch für die Lesbarkeit, können Sie auch dies tun:

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

das den obigen Code entspricht, weil die Räume so lange ignoriert werden, wie die ~ ist.

oben Jedes der ylab Ausdrücke die folgende Handlung geben:

enter image description here

+0

Dank! Ich war mir dieser Verwendung des ~ nicht bewusst. Ich wusste, dass es etwas Kleines war, das ich vermisste. Und natürlich hatten Sie Recht mit dem Hochgestellten. Ich arbeite auch mit Indizes in meinem Code und schrieb den falschen Begriff in meiner Eile zu posten. – KVininska