2016-03-08 6 views
5

Я пытаюсь получить надстрочный индекс для единиц моей оси y, используя выражения plotmath, упомянутые в нескольких сообщениях. Я просмотрел потоки, используя expression, а также here, но он просто не работает для меня. Вот то, что я до сих пор:Сверхкопинг в ggplot2 с использованием 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 = " "))) 

ggtitle выражение работает, но я до сих пор не получаю мои оси Y, чтобы читать «зостер плотность побегов (побеги/м2)» с «2» в качестве верхнего индекса. Что мне не хватает?

ответ

4

Вам не нужен второй expression(). Кроме того, m[2] дает индекс. Используйте верхний индекс m^2.

Вот пример с встроенной рамой mtcars данных:

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

В самом деле, вам даже не нужно использовать paste. Вместо этого вы могли бы сделать это:

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

где ~ является «пространство» характер. Если вы помещаете фактические пробелы между словами (без использования ~), вы получите сообщение об ошибке. Тем не менее, для удобства чтения, вы также можете сделать это:

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

что эквивалентно кода выше, так как пробелы игнорируются до тех пор, как ~ есть.

Любой из ylab выражений выше даст следующий сюжет:

enter image description here

+0

Спасибо! Я не знал об этом использовании ~. Я знал, что это было что-то маленькое, чего мне не хватало. Конечно, ты был прав насчет надстрочного индекса. Я также работаю с индексами в своем коде и написал неправильный термин в своем спешке для публикации. – KVininska