当我运行这个脚本时,我得到了以下图:
ggplot(fgseaResTidy %>% filter(padj < 0.05) %>% head(n= 20), aes(reorder(pathway, NES), NES)) +
geom_col(aes(fill= NES > 5)) +
coord_flip() +
labs(x="Pathway", y="Normalized Enrichment Score",
title="Hallmark pathways NES from GSEA") +
theme(axis.text.y.left = element_text(size = 10)) +
scale_x_discrete(label = function(x) stringr::str_trunc(x, 40, "right"))
theme_minimal()

我尝试截断scale_x_discrete标签以缩短标签,但我想删除每个标签前面的"REACTOME_“部分。有什么建议吗?
耽误您时间,实在对不起!娜奥米
发布于 2021-11-10 09:42:45
这不是ggplot (必然)的问题,而是调用ggplot之前的简单数据操作。
首先,试着把你的data.frame操作移到ggplot之外:
fgseaResTidy %>% filter(padj < 0.05) %>% head(n= 20) %>%
ggplot(aes(reorder(pathway, NES), NES)) +
geom_col(aes(fill= NES > 5)) +
...(它只是提高了可读性)
接下来,在REACTOME_上进行搜索和替换
fgseaResTidy %>% filter(padj < 0.05) %>% head(n= 20) %>%
mutate(pathway = sub("REACTOME_", "", pathway, fixed=TRUE)) %>%
ggplot(aes(reorder(pathway, NES), NES)) +
geom_col(aes(fill= NES > 5)) +
...根据路径名中REACTOME_是否出现在其他位置,您可能希望在sub中使用正则表达式,即sub("^REACTOME\\_", "", pathway)。
编辑:
严格地说,您也可以删除scale_x_discrete调用中的文本
scale_x_discrete(label = function(x) {
x %>% sub("REACTOME_", "", .) %>% stringr::str_trunc(40, "right"))
})https://stackoverflow.com/questions/69910863
复制相似问题