Верхний индекс в ggplot2 с использованием plotmath

Я пытаюсь получить надстрочный индекс для единиц моей оси Y, используя выражения plotmath, на которые ссылаются в нескольких сообщениях. Я просмотрел потоки по использованию expression, а также здесь, но это не так работает на меня. Вот что у меня есть до сих пор:

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» в качестве верхнего индекса. Что мне не хватает?


person KVininska    schedule 08.03.2016    source источник


Ответы (1)


Вам не нужен второй 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 даст следующий график:

введите описание изображения здесь

person eipi10    schedule 08.03.2016
comment
Спасибо! Я не знал об этом использовании ~. Я знал, что это что-то маленькое, чего мне не хватало. И вы были правы насчет надстрочного индекса, конечно. Я также работаю с индексами в своем коде и написал неправильный термин, когда спешил опубликовать. - person KVininska; 09.03.2016