首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ggplot2:移除轴标签的第一个单词

ggplot2:移除轴标签的第一个单词
EN

Stack Overflow用户
提问于 2021-11-10 09:36:48
回答 1查看 50关注 0票数 0

当我运行这个脚本时,我得到了以下图:

代码语言:javascript
复制
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_“部分。有什么建议吗?

耽误您时间,实在对不起!娜奥米

EN

回答 1

Stack Overflow用户

发布于 2021-11-10 09:42:45

这不是ggplot (必然)的问题,而是调用ggplot之前的简单数据操作。

首先,试着把你的data.frame操作移到ggplot之外:

代码语言:javascript
复制
fgseaResTidy %>% filter(padj < 0.05) %>% head(n= 20) %>%
ggplot(aes(reorder(pathway, NES), NES)) +
  geom_col(aes(fill= NES > 5)) +
  ...

(它只是提高了可读性)

接下来,在REACTOME_上进行搜索和替换

代码语言:javascript
复制
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调用中的文本

代码语言:javascript
复制
scale_x_discrete(label = function(x) {
  x %>% sub("REACTOME_", "", .) %>% stringr::str_trunc(40, "right"))
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69910863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档