R установка расстояния между графиками в мультиплоте
После предыдущего сообщения R Указание ширины панели ggplot2 я смог создать этот график:
Вы можете найти вывод dput(datos) по адресу http://ubuntuone.com/0Nlb97mOeDhSbFrbFKCeEG
Теперь мой вопрос, как я могу удалить / уменьшить пустое пространство между графиками. Я нашел примеры с пакетом ggExtra, ggplot и facet, мультиплотами с параметрами, такими как plot.margin или panel.margin, но не смог найти способ применения к моему случаю.
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ: я только что заметил, что участки имеют не одинаковую ширину. Нужно, чтобы они имели одинаковую ширину, чтобы они могли использовать метки оси x на нижнем графике.
2 ответа
С помощью xlab(NULL)
вместо xlab(" ")
удалит некоторое пространство от основания каждого заговора.
С помощью opts(plot.margin = unit(c(0,0,0,0), "cm"))
удалит немного места с краев.
Я думаю, что вы слишком усложнили вещи, создав 5 отдельных графиков и перекомпоновав их. Огранка намного проще.
mdatos <- melt(datos[, -1], id.vars = "dia")
(p_all <- ggplot(mdatos, aes(dia, value)) +
geom_line(colour = "blue") +
facet_grid(variable ~ ., scale = "free_y") +
xlab("Day") +
ylab(NULL)
)
Панели графика имеют разную ширину, потому что некоторые метки оси Y имеют трехзначные числа, а некоторые только две. Либо измените форматирование оси Y, либо воспользуйтесь моим предложением по фасетированию.
Вы можете расположить и контролировать поля нескольких участков с помощью par
а также layout
, Например:
par (fig=c(0,1,0,1), # Figure region in the device display region (x1,x2,y1,y2)
omi=c(0,0,0.3,0), # global margins in inches (bottom, left, top, right)
mai=c(0.1,0.1,0.3,0.1)) # subplot margins in inches (bottom, left, top, right)
layout(matrix(1:4, 2, 2, byrow = TRUE))