1

我想根据另一个因子变量中的值对堆积条形图中的条形图进行分组。但是,我想在不使用方面的情况下做到这一点。

我的长格式数据

我想根据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()

这给出了一个按字母顺序排列的条形图: 在此处输入图像描述

我尝试通过x=reorder(naam,afk)aes. 但这没有用。也使用group=afk也没有预期的效果。

任何想法如何做到这一点?

4

3 回答 3

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 代码之后,我得到了

更新的条形图

于 2014-05-19T18:46:22.243 回答
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()

这使: 在此处输入图像描述

于 2014-05-19T19:17:38.480 回答
-1

R倾向于将级别的顺序视为数据的属性而不是图形的属性。在调用绘图命令之前尝试重新排序数据本身。尝试运行:

nl.melt$naam <- reorder(nl.melt$naam, nl.melt$afk)

然后运行你的ggplot代码。或使用其他方式重新排序您的因子水平naam

于 2014-05-19T18:14:00.910 回答