## dummy data
dat <- data.frame(Depth = sample(c(3:6), 20, replace = TRUE), OM = 5 * runif(20))
Добавьте немного места для надписей и аннотаций оси y, увеличив поле с левой стороны графика (side = 2
):
## margin for side 2 is 7 lines in size
op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1
Теперь сюжет:
## draw the plot but without annotation
boxplot(OM ~ Depth, data = dat, axes = FALSE, ann = FALSE)
## add axes
axis(1, at = 1:4, labels = c(" ", "Shallow", "Deep", " "), cex.axis = 1.5)
axis(2, cex.axis = 2)
## now draw the y-axis annotation on a different line out from the plot
## using the extra margin space:
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5,
line = 4.5)
## draw the box to finish off
box()
Затем сбросьте поля печати:
par(op)
Это дает:
Итак, мы создали больше места для поля графика на стороне 2, а затем нарисовали оси и аннотацию (ylab
) по отдельности, чтобы управлять разметкой графика.
Итак, ключом к этому является строка:
op <- par(mar = c(5,7,4,2) + 0.1) ## default is c(5,4,4,2) + 0.1
Мы сохраняем исходные графические параметры в объекте op
, и изменяют размеры полей (в количестве строк) на 5, 7, 4, 2 + 0,1 строки каждый для поля снизу, слева, сверху, справа соответственно. В строке выше показаны значения по умолчанию, поэтому код дает на 2 поля слева больше, чем обычно предусмотрено по умолчанию.
Затем, когда мы рисуем метку оси Y, используя title()
, мы указываем, какую линию (из 7) нарисовать метку в:
title(ylab = "Loss of Percent Organic Matter per Year", cex.lab = 1.5,
line = 4.5)
Здесь я использовал строку 4.5
, но 5
также будет работать. Чем больше значения 'line'
, тем дальше от графика рисуется метка.
Хитрость заключается в том, чтобы найти значение для левого поля и значение 'line'
в вызове title()
, которое позволяет тиковым меткам оси и метке оси не перекрываться. Метод проб и ошибок, вероятно, является наилучшим решением для поиска значений, необходимых для базовой графики.