Уменьшить запас пустого пространства в заговоре
Данные и библиотеки, использованные для этого вопроса:
library(tidyverse)
library(reshape2)
library(cowplot)
data("diamonds")
temp1_m <- temp2_m <- melt(diamonds[1:3])
temp1_m[3] <- temp2_m[3] <- NULL
colnames(temp1_m) <- colnames(temp2_m) <- c('Var1', 'Var2', 'value')
Я пытаюсь совместить два geom_tile
участки с использованием cowplot
библиотека. Два отдельных участка создаются с использованием:
figMT <- ggplot(temp2_m, aes(Var1, Var2))+
geom_tile(aes(fill = value), colour = 'white')+
scale_fill_gradient(low = 'green', high = 'red', name = 'log fold change',
guide = guide_legend(title.vjust = 1, reverse = T))+
ggtitle('Mutant clusters')+
scale_x_discrete(expand = c(0, 0))+
scale_y_discrete(limits = rev(levels(temp2_m$Var2)))+
xlab('')+
ylab('')+
coord_equal()+
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.text = element_text(size=12),plot.margin=grid::unit(c(0,0,0,0), "mm"))
а также
figWT <- ggplot(temp1_m, aes(Var1, Var2))+
geom_tile(aes(fill = value), colour = 'white')+
scale_fill_gradient(low = 'green', high = 'red', name = 'log fold change',
guide = guide_legend(title.vjust = 1, reverse = T))+
ggtitle('WT clusters')+
scale_x_discrete(expand = c(0, 0))+
scale_y_discrete(limits = rev(levels(temp1_m$Var2)))+
xlab('')+
ylab('Cluster')+
coord_equal()+
theme(axis.text.x = element_text(angle = 45, hjust = 1),
axis.text = element_text(size=12),plot.margin=grid::unit(c(0,0,0,0), "mm"))
Я тогда использую cowplot
сначала сделать заголовок с:
title <- ggdraw()+
draw_label("Heatmaps over the average fold change of the clusters", fontface='bold')
а затем объединить заголовок и два графика с:
p <- plot_grid(figWT+ theme(plot.margin = unit(c(0, -10, 0, 0), "cm")),
figMT+ theme(plot.margin = unit(c(0, 0, 0, -5.1), "cm")),
labels=c('A', 'B'), hjust = c(-24, -.5))
plot_grid(title, p, nrow=2, rel_heights=c(0.1, 1))
Я уменьшил много пробелов между двумя тепловыми картами после их слияния. Но это создает много пробелов слева и справа, которые мне не удается удалить. То есть, когда я сохраняю картинку с:
ggsave('ex1.pdf', scale = 2)
Какие-либо предложения?
1 ответ
Добавляя coord_equal()
вы устанавливаете систему координат с фиксированным соотношением сторон, что означает, что вам нужно, чтобы соотношение сторон конечного выходного файла соответствовало соотношениям сторон ваших основных графиков. Не указав ширину и высоту в вашем ggsave()
По сути, вы гарантированно не получите правильный вывод. Кроме того, если вы обнаружите, что устанавливаете большие отрицательные поля, вы точно знаете, что делаете что-то не так.
Не зная точно, каков предполагаемый результат, это кажется мне разумным:
p <- plot_grid(figWT, figMT, labels=c('A', 'B'))
plot_grid(title, p, nrow=2, rel_heights=c(0.1, 1))
ggsave("ex1.png", width = 8, height = 4.5, dpi = 300)