ggplot2 поля площади участка?

86

Есть ли простой способ увеличить расстояние между заголовком графика и областью графика под ним (прямоугольник с данными). Точно так же я бы предпочел иметь некоторое пространство между заголовком оси и метками оси.

Другими словами, есть ли способ «переместить заголовок немного вверх, заголовок оси Y немного влево, а заголовок оси x - немного вниз»?

KT.
источник
1
Вы всегда можете вставить некоторые "\n"символы в заголовки, чтобы заставить новые строки.
Joran

Ответы:

113

Вы можете настроить поля графика с помощью plot.marginin, theme()а затем переместить метки оси и заголовок с vjustаргументом element_text(). Например :

library(ggplot2)
library(grid)
qplot(rnorm(100)) +
    ggtitle("Title") +
    theme(axis.title.x=element_text(vjust=-2)) +
    theme(axis.title.y=element_text(angle=90, vjust=-0.5)) +
    theme(plot.title=element_text(size=15, vjust=3)) +
    theme(plot.margin = unit(c(1,1,1,1), "cm"))

даст вам что-то вроде этого:

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

Если вам нужна дополнительная информация о различных theme()параметрах и их аргументах, вы можете просто ввести их ?themeв командной строке R.

Джуба
источник
4
Благодарность! Я не был уверен, что нужно предоставить, чтобы grid::unitsэта plot.marginаргументация работала . Оказывается, вам нужно указать длину 4 числа units. Жаль, что xаргумент unitsне переработан каким-либо образом. Кроме того, вы, вероятно, уже знаете это, но стоит отметить / обновление, optsкоторое теперь устарело в последней версии ggplot2 (0.9.2+), заменено theme, as theme_textтеперь заменено на element_text.
Пол Макмерди,
44
Порядок краев для plot.margin - единица (c (вверху, справа, внизу, слева), единицы), если кто-то еще хочет сэкономить время на поиске.
mightypile
16
@generic_user: может быть, проще запомнить, как указано здесь :t, r, b, l (To remember order, think trouble).
Tung
3
Кроме того, чтобы помнить ... это только по часовой стрелке от верхней: top, right, bottom, left.
spops
1
также:margin(t, r, l, b)
Brian D