【发布时间】:2021-04-15 20:59:15
【问题描述】:
我正在尝试将 16 个不同的图粘贴到一个具有公共 x 轴的图中
我成功地使用 grid.draw() 分别制作、绘制和粘贴图表
但我无法以连续的方式转换 x 轴,或者至少移除每个图形之间的空间
我附上一些代码来说明图表是如何制作的。
plot1 = ggplot(map_snp %>% filter( chr == chr[1] ), aes(x=POS)) +
geom_histogram( binwidth = 2,
col=palette[2],
fill=palette[2],
alpha = .2) +
xlab("Chromosome 1") +
ylab("SNP count") +
theme_bw() +
theme(axis.text.x = element_text(angle = 0, colour = "black"),
text=element_text(family="Times New Roman", size = 12),
panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line.y = element_line(colour = "black"),
axis.line.x = element_line(colour = "black"))
par_plots <- list()
for (i in list_par) {
par_plots[[i]] = ggplot(map_snp %>% filter( chr == i ), aes(x=POS)) +
geom_histogram( binwidth = 2,
col= palette[3],
fill= palette[3],
alpha = .2) +
xlab(paste0(i)) +
theme_bw() +
theme(axis.text.x = element_text(angle = 0, colour = "black"),
text=element_text(family="Times New Roman", size = 12),
panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line.y = element_blank(),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.line.x = element_line(colour = "black"))
}
impar_plots <- list()
for (i in list_impar) {
impar_plots[[i]] = ggplot(map_snp %>% filter( chr == i ), aes(x=POS)) +
geom_histogram( binwidth = 2,
col= palette[2],
fill=palette[2],
alpha = .2) +
xlab(paste0(i)) +
theme_bw() +
theme(axis.text.x = element_text(angle = 0, colour = "black"),
text=element_text(family="Times New Roman", size = 12),
panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line.y = element_blank(),
axis.title.y = element_blank(),
axis.text.y = element_blank(),
axis.ticks.y = element_blank(),
axis.line.x = element_line(colour = "black"))
}
grid.newpage()
png(paste("./snp_map.png"), width = 15*4.5, height = 8, res = 320, units = "cm", pointsize = 12, bg = "white")
grid.draw(cbind(ggplotGrob(plot1),
ggplotGrob(par_plots$`Chromosome 2`),
ggplotGrob(impar_plots$`Chromosome 3`),
ggplotGrob(par_plots$`Chromosome 4`),
ggplotGrob(impar_plots$`Chromosome 5`),
ggplotGrob(par_plots$`Chromosome 6`),
ggplotGrob(impar_plots$`Chromosome 7`),
ggplotGrob(par_plots$`Chromosome 8`),
ggplotGrob(impar_plots$`Chromosome 9`),
ggplotGrob(par_plots$`Chromosome 10`),
ggplotGrob(impar_plots$`Chromosome 11`),
ggplotGrob(par_plots$`Chromosome 12`),
ggplotGrob(impar_plots$`Chromosome 13`),
ggplotGrob(par_plots$`Chromosome 14`),
ggplotGrob(impar_plots$`Chromosome 15`),
ggplotGrob(par_plots$`Chromosome 16`),
size = "last"))
dev.off()
单核苷酸多态性映射
【问题讨论】:
-
您希望如何转换您的 x 轴?它看起来已经是连续的,并且对于您到目前为止所做的事情,似乎可以通过
facet_wrap()复制它。您能否解释一下您要完成的工作并提供一个示例数据集,可以单独使用来说明您的问题?如果您的数据太大(我猜可能是这样),您能用其中一个内置数据集演示相同的原理吗?