我想根据另一个因子变量中的值对堆积的条形图中的条形图进行分组。但是,我想在不使用方面的情况下这样做。
我想根据afk
变量对堆积的条形图进行分组。正常的堆积条形图可以使用:
ggplot(nl.melt, aes(x=naam, y=perc, fill=stemmen)) +
geom_bar(stat="identity", width=.7) +
scale_x_discrete(expand=c(0,0)) +
scale_y_continuous(expand=c(0,0)) +
coord_flip() +
theme_bw()
给出了一个alfabetically有序的barplot:
我尝试使用x=reorder(naam,afk)
中的aes
对其进行分组。但那没用。使用group=afk
也没有达到预期的效果。
任何想法如何做到这一点?
答案 0 :(得分:3)
reorder
应该有效,但问题是你正试图通过一个因素重新排序。您需要明确说明如何使用该信息。你可以使用
nl.melt$naam <- reorder(nl.melt$naam, as.numeric(nl.melt$afk))
或
nl.melt$naam <- reorder(nl.melt$naam, as.character(nl.melt$afk), FUN=min)
取决于您是希望按afk
的现有级别排序,还是希望按afk
的级别按字母顺序排序。
运行并重新运行ggplot代码后,我得到了
答案 1 :(得分:2)
@ MrFlick的方法的替代方法(基于@CarlosCinelli链接的答案)是:
ggplot(nl.melt, aes(x=interaction(naam,afk), y=perc, fill=stemmen)) +
geom_bar(stat="identity", width=.7) +
scale_x_discrete(expand=c(0,0)) +
scale_y_continuous(expand=c(0,0)) +
coord_flip() +
theme_bw()
给出:
答案 2 :(得分:-1)
R倾向于将级别的顺序视为数据的属性而不是图的属性。在调用绘图命令之前尝试重新排序数据本身。尝试运行:
nl.melt$naam <- reorder(nl.melt$naam, nl.melt$afk)
然后运行您的ggplot
代码。或者使用其他方式在naam
中重新排序您的因子级别。