在ggplot2中订购位置“闪避”

时间:2015-03-13 15:15:29

标签: r ggplot2

看似简单,但我无法找到解决方案。

names(AllCoursesReg)
[1] "name"   "Course" "Status"

我的代码

ggplot(AllCoursesReg, aes(Course, fill = Status)) + 
geom_bar(aes(order = Status), position = "dodge", colour = "black") + theme_bw()+
guides(fill = guide_legend(reverse = TRUE)) 

我只是希望注册人位于左侧,而不是右侧。 我尝试过Order,level,factor,但它没有用

感谢您的帮助。

enter image description here

2 个答案:

答案 0 :(得分:4)

您必须决定factor级别的顺序。以下是?geom_bar的示例。

# example from ?geom_bar
ggplot(diamonds, aes(clarity, fill=cut)) + geom_bar(position="dodge")
# reorder cut using levels = rev(levels(cut))
ggplot(diamonds, aes(clarity, fill=factor(cut, levels = rev(levels(cut))))) + 
  geom_bar(position="dodge") + 
  scale_fill_discrete('cut') # change name back to cut

答案 1 :(得分:2)

自该问题以来,ggplot已更新,因此,这是一个利用ggplot2的新功能的答案。

只需将 position_dodge2(reverse = TRUE)添加到position属性。使用OP的代码:

ggplot(AllCoursesReg, aes(Course, fill = Status)) + 
geom_bar(aes(order = Status), position=position_dodge2(reverse = TRUE), colour = "black") + theme_bw()+
guides(fill = guide_legend(reverse = TRUE))