У меня есть такое выражение в R:

ylabel <- expression("NO"[3]*"-N-Concentration [mg/l]")

Это должно быть метка моей оси Y на моем графике ggboxplot. Поскольку y-метка находится слишком близко к оси, я использую \n (новая линия), чтобы увеличить расстояние до оси:

ylab=paste(ylabel,"\n")

Но тогда на моем графике моя метка не будет отображаться правильно, как я ожидал:

Неправильно отформатированная этикетка

Кто-нибудь знает, как решить эту проблему? Я искал на форуме, но, к сожалению, все еще не добился успеха.

Большое спасибо за любую помощь или предложение!

Изменить: я просто добавил небольшой пример, чтобы воспроизвести проблему:

ylabel <- expression("NO"[3]*"-N-Concentration [mg/l]")
par(mar=c(6,8,1,1))
y=c(1,1,2,2,3,4,5)
plot(y, ylab=paste(ylabel,"\n"))
2
PDUY 25 Сен 2021 в 23:36

2 ответа

Лучший ответ

Рассмотрите возможность использования bquote, который вычисляет выражение с помощью atop

par(mar =  c(3, 6,  2, 2))
 plot(1:10, ylab = bquote(atop(NO[3]*-N-Concentration [mg/l], "\n")))

-вывод

enter image description here


Или, если нам нужно выражение

par(mar =  c(3, 6,  2, 2))
ylabel <- expression(atop(NO[3]*-N-Concentration [mg/l], "\n"))
plot(y, ylab=ylabel)

-вывод

enter image description here

---

Или, как OP, упомянутый в комментариях, если [mg/l] нужно показать как есть, просто процитируйте его

ylabel <- expression(atop(NO[3]*-N-Concentration*" [mg/l]", "\n"))
par(mar =  c(3, 6,  2, 2))
plot(1:10, ylab = ylabel)
2
akrun 25 Сен 2021 в 21:30

Мы могли бы использовать substitute:

plot(y, 
     ylab=substitute(paste("NO"[3]*-N-Concentration [mg/l],"\n"), list(ylabel[2])))

enter image description here

1
TarJae 25 Сен 2021 в 21:39