Уменьшите все поля печати в ggplot2 и grid.arrange - PullRequest
0 голосов
/ 11 января 2019

Я пытаюсь скомпилировать четыре графика с grid.arrange() и уменьшить поля для каждого графика, чтобы они были красивыми и компактными. Я хотел бы использовать theme(plot.margin=unit(c(x, x, x , x), "cm")) (другие решения приветствуются).

Подобный вопрос был задан некоторое время назад: здесь

Однако, plot.margin теперь требует аргумент units, который не имеет значения по умолчанию. Я не смог найти никаких объяснений того, что R ожидает в этом аргументе. Будет ли у кого-нибудь пример?

Для воспроизводимого примера, пожалуйста, используйте приведенный в старом вопросе. Спасибо!

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Вы можете использовать «см», «линии» или «точки» в качестве аргумента единиц измерения. Ниже приведен пример кода. Просто измените последний аргумент внутри темы (plot.margin = unit (c (x, x, x, 1.5), «линии»), чтобы выровнять 3 графика в начале.

library(ggplot2)
library(grid)
library(gridExtra)

test1 <- qplot(rnorm(100)) +
ggtitle("Title") +
theme(axis.text=element_text(size=16),
axis.title=element_text(size=18),axis.title.x=element_text(size=14),
plot.margin = unit(c(1, 1, 0, 1.4), "lines"),
legend.text=element_text(size=16))

test2 <- qplot(rnorm(100)) +
ggtitle("Title") +
theme(axis.text=element_text(size=16),
axis.title=element_text(size=18),axis.title.x=element_text(size=14),
plot.margin = unit(c(1, 1, 0, 1.2), "lines"),
legend.text=element_text(size=16))

test3 <- qplot(rnorm(100)) +
ggtitle("Title") +
theme(axis.text=element_text(size=16),
axis.title=element_text(size=18),axis.title.x=element_text(size=14),
plot.margin = unit(c(1, 1, 0, 1), "lines"),
legend.text=element_text(size=16)) 



grid.arrange(test1,test2,test3, nrow=3)
0 голосов
/ 11 января 2019

У нас есть unit(c(t, r, b, l), "cm") с размерами полей сверху, справа, снизу и слева соответственно. И на самом деле есть значение по умолчанию:

theme_get()$plot.margin
# [1] 5.5pt 5.5pt 5.5pt 5.5pt

Пример:

qplot(mpg, wt, data = mtcars) + 
  theme(plot.margin = unit(c(5, 15, 25, 35), "pt"),
        plot.background = element_rect(fill = "grey90"))

enter image description here

...