我在纠结一个问题:我在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)
得到的结果
你能帮助我理解我是否做错了什么吗?或者这只是软件包的一个限制?
1条答案
按热度按时间sg2wtvxw1#
OP,看起来
ggbreak
与安排多个绘图的函数不兼容,正如这里的包的文档中所指出的。看起来确实有一个变通方案,通过print()
(我没有得到这个工作)或aplot::plot_list(...)
,这对我来说确实有效。这里有一个使用内置数据集的示例。绘制
p1
和p2
会在y轴上产生您所期望的断点,但绘制plot_grid(p1,p2)
会导致并排放置的图没有y轴断点。以下 * 确实 * 可以在不干扰y轴断点的情况下排列图: