重新排列geom_bar ggplot2中的栏


118

我正在尝试制作一个条形图,其中该图按从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")

Answers:


215

您的代码工作正常,除了条形图从低到高排序。当您想要将条形从高到低排序时,您必须在-前面添加一个符号value

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

这使:

在此处输入图片说明


使用的数据:

corr.m <- structure(list(miRNA = structure(c(5L, 2L, 3L, 6L, 1L, 4L), .Label = c("mmu-miR-139-5p", "mmu-miR-1983", "mmu-miR-301a-3p", "mmu-miR-5097", "mmu-miR-532-3p", "mmu-miR-96-5p"), class = "factor"),
                         variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L), .Label = "pos", class = "factor"),
                         value = c(7L, 75L, 70L, 5L, 10L, 47L)),
                    class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6"))

由于某种原因,它在我的情节中没有得到排序
user3741035 2014年

@ user3741035奇怪。您是在上面提供的样本数据集中还是在整个数据集中使用了它?
2014年

您正在使用哪个版本的R&ggplot?您是否也可以使用更大的样本数据集(最好使用多个值variable)?
2014年

6
找到了解决方案:我加载了会弄乱事情的库(gplots)
user3741035 2014年

1
@maycca它给我正确的结果(在OSX 10.10.4 / Windows 7,R 3.2.3和ggplot2 2.1.0上)。也许您应该重新开始?
Jaap 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.