R 重新排序堆叠条形图

R 重新排序堆叠条形图,r,ggplot2,stacked-chart,geom-bar,R,Ggplot2,Stacked Chart,Geom Bar,我想根据因子变量的特定级别的值对堆叠条形图重新排序 我想根据填充变量(stemen)的级别n.stem.niet将堆叠的钢筋从高到低分组。正常堆叠条形图可通过以下方式绘制: 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

我想根据因子变量的特定级别的值对堆叠条形图重新排序

我想根据填充变量(
stemen
)的级别
n.stem.niet
将堆叠的钢筋从高到低分组。正常堆叠条形图可通过以下方式绘制:

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()
给出了一个阿尔法倍序条形图:

我尝试使用以下三段代码对数据进行重新排序,但没有一段代码满足我的要求:

# 1st approach
nl.melt$stemmen <- factor(nl.melt$stemmen,
                          levels=c("n.stem.niet","n.stem.afw","n.stem.ja","n.stem.nee","n.stem.onth"),
                          ordered=TRUE)
# 2nd approach
nl.melt$naam <- reorder(nl.melt$naam, as.character(nl.melt$stemmen), FUN=min)
# 3rd approach
nl.melt$stemmen <- relevel(nl.melt$stemmen,"n.stem.niet")

分解您的问题,您似乎希望:

  • 值的降序提取
    n.stem.niet的值
  • 按此顺序分配
    naam
    的因子级别
试试这个:

naamLevels <- with(nl.melt[nl.melt$stemmen == "n.stem.niet"], naam[order(value)])
nl.melt$naam <- factor(nl.melt$naam, levels = naamLevels)

这也可以通过

nl.melt$naam <- with(nl.melt, reorder(naam, 
    ifelse(stemmen=="n.stem.niet", perc,0), FUN=max))

nl.melt$naam我认为您不需要
relevel()
。在
reorder()
@Andrie之后停止,我将编辑我的问题:我分别尝试了这些方法,而不是一起尝试。我真的不知道如何将数据读入R,你能在每个值中没有所有引号的情况下加载它吗?或者只是在那里加载一个
dput
?@DavidArenburg奇怪,我用
nl.melt-Thanx阅读文本没有问题,这很有效。是否还有一种方法可以重新排列堆叠条的各个部分?右边是
n.stem.niet
n.stem.afw
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()
nl.melt$naam <- with(nl.melt, reorder(naam, 
    ifelse(stemmen=="n.stem.niet", perc,0), FUN=max))