Уменьшение расстояния между линиями при использовании поверх - PullRequest
0 голосов
/ 02 мая 2018

Я использовал atop и expression в R для создания меток осей для некоторых фигур, так как мне нужно выделить курсивом некоторые слова, использовать надстрочные индексы, а мои метки должны состоять из двух строк.

Это пример того, что я использую:

plot(c(1:10),ylab="")
mtext(side=2,line=2,expression(atop('Mean height of ', italic(Dicksonia~antarctica)*  ' (m)')))

enter image description here

Однако расстояние между двумя линиями слишком велико для моих фигур. Могу ли я уменьшить это пространство?

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Попробуйте использовать параметр lheight в функции par() и слегка измените ваш expression() ввод:

par(lheight=0.2)   # the default is 1
plot(c(1:10),ylab="")

# Use new line character to separate the lines and 
# apply atop() command to the second part of your expression:
mtext(side=2,line=2,
      expression('Mean height of \n', atop(italic(Dicksonia~antarctica)*  ' (m)')))
0 голосов
/ 15 января 2019

Существует решение с использованием только 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)

0 голосов
/ 02 мая 2018

Я предлагаю вам пропустить часть atop и придерживаться стандартного \n, чтобы указать новую строку. В этом случае вы можете управлять интервалом с помощью графического параметра lheight в par. Итак, вы можете сделать что-то вроде этого:

par(lheight=.5) # or adjust to whatever
plot(c(1:10),ylab="")
mtext(side=2,line=2,expression('Mean height of \n', italic(Dicksonia~antarctica)*  ' (m)'))

Это также может сработать с atop, я не мог понять это! Так что любые комментарии (или другие ответы) по этому поводу приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...