plot_grid函数从图中的ggbreak中删除轴中断

vsdwdz23  于 2023-01-15  发布在  其他
关注(0)|答案(1)|浏览(187)

我在纠结一个问题:我在ggplot2中创建了两个火山图,但由于两个图中都有一个异常点,我需要添加y轴断点以获得更好的可视化效果。当我想使用cowplot::中的plot_grid在同一页面中绘制两个火山图时,问题出现了,因为它显示的是没有我设置的断点的原始图。

p<- c1 %>%
     ggplot(aes(x = avg_log2FC,
                y = -log10(p_val_adj),
                fill = gene_type,    
                size = gene_type,
                alpha = gene_type)) + 
     geom_point(shape = 21, # Specify shape and colour as fixed local parameters    
                colour = "black") + 
     geom_hline(yintercept = 0,
                linetype = "dashed") + 
     scale_fill_manual(values = cols) + 
     scale_size_manual(values = sizes) + 
     scale_alpha_manual(values = alphas) + 
     scale_x_continuous(limits=c(-1.5,1.5), breaks=seq(-1.5,1.5,0.5))  +
     scale_y_continuous(limits=c(0,110),breaks=seq(0,110,25))+
     labs(title = "Gene expression",
          x = "log2(fold change)",
          y = "-log10(adjusted P-value)",
          colour = "Expression \nchange") +
     theme_bw() + # Select theme with a white background  
     theme(panel.border = element_rect(colour = "black", fill = NA, size= 0.5),    
           panel.grid.minor = element_blank(),
           panel.grid.major = element_blank()) 
   p1 <- p + scale_y_break(breaks = c(30, 100))
   p1

p图(无中断):

和带断点的p1图:

我对第二个图做了同样的操作,但这是使用plot_grid(p1,p3, ncol = 2)得到的结果

你能帮助我理解我是否做错了什么吗?或者这只是软件包的一个限制?

sg2wtvxw

sg2wtvxw1#

OP,看起来ggbreak与安排多个绘图的函数不兼容,正如这里的包的文档中所指出的。看起来确实有一个变通方案,通过print()(我没有得到这个工作)或aplot::plot_list(...),这对我来说确实有效。这里有一个使用内置数据集的示例。

# setting up the plots
library(ggplot2)
library(ggbreak)
library(cowplot)

p1 <-
ggplot(mtcars, aes(x=mpg, disp)) + geom_point() +
  scale_y_break(c(200, 220))

p2 <-
  ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width, color=Species)) +
  geom_point() + scale_y_break(c(3.5, 3.7))

绘制p1p2会在y轴上产生您所期望的断点,但绘制plot_grid(p1,p2)会导致并排放置的图没有y轴断点。
以下 * 确实 * 可以在不干扰y轴断点的情况下排列图:

aplot::plot_list(p1,p2)

相关问题