ggplot中的条形排序

时间:2011-05-11 16:29:56

标签: r ggplot2 bar-chart

我已经在这个论坛中查看了答案,但似乎无法找到这个具体问题的答案。我有以下数据,并希望创建一个条形图,其中条形按“值”从大到小排序,而不是按字母顺序排列:

breadth_data <- read.table(textConnection("Stakeholder  Value
'Grantseekers'  0.90
'Donors'    0.89
'Community' 0.55
'Hurricane Relief Fund' 0.24
'Media' 0.19
'Employment Seekers'    0.12
'Affiliates'    0.10
'Youth' 0.09
'Women' 0.02
'Former Board Members'  0.01"), header=TRUE)

然后是基本条形图:

c <- ggplot(breadth_data, aes(x=Stakeholder, y=Value))
c + geom_bar(stat="identity") + coord_flip() + scale_y_continuous('') + scale_x_discrete('')

我已经尝试过在StackOverflow上看到的许多不同的重新排序和转换,但我似乎无法找到一个有效的。我相信这很简单,但我会感激任何帮助!

谢谢,

格雷格

1 个答案:

答案 0 :(得分:70)

您想要功能reorder()

breadth_data <- transform(breadth_data, 
                          Stakeholder = reorder(Stakeholder, Value))

给出了:

reordered barplot

如果你想要反过来,一种简单的方法就是在order()来电Value内使用reorder()

breadth_data <- transform(breadth_data,
                          Stakeholder = reorder(Stakeholder, 
                                                order(Value, decreasing = TRUE)))