Существует решение с использованием только atop()
, как вы исследовали в первый раз, но оно немного более многословно, чем решение с использованием только \n
, опубликованное Яннисом выше .
Основная идея состоит в том, что каждый раз, когда мы вызываем atop()
внутри другого atop()
, текст становится меньше, но также и разрыв между строками, поэтому мы можем использовать это в наших интересах. Для вашего примера из двух строк мы могли бы вызвать atop()
два раза, один внутри другого, что заставляет 3 строки, но мы устанавливаем первую строку пустой (NA
или NULL
или ""
будет работать), так что next atop()
отображает меньший разрыв между строками, но и текст становится меньше. Чтобы решить проблему уменьшения размера текста, мы должны использовать textstyle()
. Что ж, все становится легко многословным, но, тем не менее, это решение.
Оригинальный код вопроса, иллюстрирующий проблему с большим разрывом между двумя строками текста; на моем устройстве даже выдвигается первая строка за пределами «холста» (я излагаю ее здесь для сравнения, чтобы ясно увидеть, что делает предлагаемое решение):
plot(c(1:10),ylab="")
mtext(side=2,line=2,expression(atop('Mean height of ', italic(Dicksonia~antarctica)* ' (m)')))
Сократите разрыв между двумя строками текста с помощью двух вызовов atop()
и переносов textstyle()
. Я также позволил себе заменить * ' (m)'
на ~ (m)
, в основном, чтобы показать, что это также возможно, придавая немного другой визуальный аспект скобок:
plot(c(1:10), ylab = "")
mtext(side = 2, line = 2,
expression(atop(NA, atop(textstyle('Mean height of'),
textstyle(italic(Dicksonia ~ antarctica) ~ (m))))))
Создано в 2019-01-15 пакетом Представ (v0.2.1)