在geom_bar ggplot2中重新排序条形图

use*_*035 104 r ggplot2

我正在尝试制作一个条形图,其中情节从miRNA最高valuemiRNA最低排序.为什么我的代码不起作用?

> head(corr.m)

        miRNA         variable value
1    mmu-miR-532-3p      pos     7
2    mmu-miR-1983        pos    75
3    mmu-miR-301a-3p     pos    70
4    mmu-miR-96-5p       pos     5
5    mmu-miR-139-5p      pos    10
6    mmu-miR-5097        pos    47

ggplot(corr.m, aes(x=reorder(miRNA, value), y=value, fill=variable)) + 
  geom_bar(stat="identity")
Run Code Online (Sandbox Code Playgroud)

Jaa*_*aap 193

您的代码工作正常,但条形图从低到高排序.如果您想要从高到低订购酒吧,您必须在-之前添加标志value:

ggplot(corr.m, aes(x = reorder(miRNA, -value), y = value, fill = variable)) + 
  geom_bar(stat = "identity")
Run Code Online (Sandbox Code Playgroud)

这使:

在此输入图像描述

  • 找到了解决方案:我加载了库(gplots),搞砸了东西 (6认同)

ETe*_*ddy 6

除了@Jaap 的回答之外,还有两种其他方式来排序情节:

1:通过使用desc参数来获取值:

ggplot(corr.m, aes(x = reorder(miRNA, desc(value)), y = value, fill = variable)) + 
   geom_bar(stat = "identity")
Run Code Online (Sandbox Code Playgroud)

2:通过重新调整 miRNA 因子并省略reorder参数:

corr.m %>%
   arrange(desc(value)) %>%
   mutate(miRNA = factor(miRNA, levels = unique(miRNA))) %>% 
ggplot(aes(x = miRNA, y = value, fill = variable)) + 
   geom_bar(stat = "identity") 
Run Code Online (Sandbox Code Playgroud)