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))