在用ggplot绘制,KEGG富集结果的bubble plot时,以每个KEGG通路中,包含的list 中的基因数目来表示bubble的大小,但是默认的语法出来的结果,在gene number比较小的时候,比如区间是[1, 3]时,size 图例中就会出现小数。但基因数目不可能是小数,所以需要解决这个问题。
解决办法是,在scale_size_continuous()
中,在 breaks
函数中使用 round
函数。
解决办法
在scale_size_continuous()
中,在 breaks
函数中使用 round
函数。
下图是我的,对富集结果列表中的上调蛋白 和下调蛋白的基因列表分别进行作图的代码:
# KEGG bubble plot
invisible(
lapply(seq_along(enrichKEGG_res_sig), function(x)
enrichKEGG_res_sig[[x]] %>%
dplyr::mutate(across(
.cols = starts_with("num"),
.fns = as.numeric
)) %>%
dplyr::mutate(gene_ratio = num_in_KEGG / num_in_list) %>%
ggplot(aes(x = gene_ratio,
y = Description)) +
geom_point(aes(
size = num_in_KEGG, color = -1 * log10(qvalue)
)) +
scale_size_continuous(name = "Gene number",
breaks = round) +
scale_color_gradient(
name = expression(paste("\u2013 Log " * italic("P"))),
low = "blue",
high = "red"
) +
labs(x = "Gene ratio",
y = NULL) +
theme_bw() +
ggsave(
filename = file.path(res_dir,
paste0(
names(enrichKEGG_res_sig)[x], "_KEGG_bubble.jpeg"
)),
width = 15,
height = 10,
units = "cm"
))
)