按数据帧中的因子排序堆积条形图

时间:2013-06-28 22:05:34

标签: r sorting ggplot2 stackedbarseries

业余R用户在这里。我在网上看起来非常努力,看看这个问题是否得到了回答,但是我没有找到一个好的答案。我无法发布图像,因为我没有10个“声誉”

我希望有一个堆积条形图,根据摄取路径的贡献百分比(按降序排序)对x变量进行排序。

Percent<-c(0.4,0.75,0.8, 0.3,0.1,0.6,0.25,0.5)
Inh<-data.frame(ID=c(rep(1,4),rep(2,4)),Age=factor(rep(1:4,2), label=c("0-1 year", "1-2 years", "2-3 years","3-6 years")), Route=factor(rep(1), label="Inhalation"),    Percent=Percent)

Ing<-data.frame(ID=c(rep(1,4),rep(2,4)),Age=factor(rep(1:4,2), label=c("0-1 year", "1-2 years", "2-3 years","3-6 years")), Route=factor(rep(1), label="Ingestion"),     Percent=1-Percent)

df<-data.frame(rbind(Inh,Ing))
ggplot(df,aes(x=ID,y=Percent,fill=Route))+ geom_bar(stat="identity")+ 
facet_wrap(~Age, scales = "free_x") +
ylab("Percent Contribution") +
labs(title = "Route Contribution to Exposure by Age Groups")

enter image description here

但我希望它看起来像我手动模拟的那样:

Percent<-c(0.1,0.6,0.25, 0.3,0.4,0.75,0.8,0.5)
Inh<-data.frame(ID=c(rep(1,4),rep(2,4)),Age=factor(rep(1:4,2), label=c("0-1 year", "1-2 years", "2-3 years","3-6 years")), Route=factor(rep(1), label="Inhalation"),    Percent=Percent)

Ing<-data.frame(ID=c(rep(1,4),rep(2,4)),Age=factor(rep(1:4,2), label=c("0-1 year", "1-2 years", "2-3 years","3-6 years")), Route=factor(rep(1), label="Ingestion"),     Percent=1-Percent)

df<-data.frame(rbind(Inh,Ing))
ggplot(df,aes(x=ID,y=Percent,fill=Route))+ geom_bar(stat="identity")+ 
facet_wrap(~Age, scales = "free_x") +
ylab("Percent Contribution") +
labs(title = "Route Contribution to Exposure by Age Groups")

enter image description here

提前谢谢!

更新:感谢罗兰,我有一个情节!但问题仍然是清晰。对于那些对此感兴趣的代码和最终产品:

ggplot(df,aes(x=id2,y=Percent,fill=Route, width=1,order = -as.numeric(Route)))+ 
geom_bar(stat="identity")+ 
facet_wrap(~Age, scales = "free_x") +
xlab(" ")+
ylab("Percent Contribution") +
theme(axis.text.x = element_blank(), axis.ticks.x= element_blank() ) +
labs(title = "DEHP Route Contribution to Exposure by Age Groups")

enter image description here

2 个答案:

答案 0 :(得分:1)

这会更改顺序而不更改数据(就像在模型中一样)。我们的想法是创建一个有序(Percent)因子,给出AgeID的互动,并将其用于绘图,但更改轴标签仅匹配{{1} }值。

ID

enter image description here

但是,我认为最终的情节令人困惑,难以阅读。

答案 1 :(得分:0)

要理解的一个基本问题是订单是图表的属性还是数据本身的属性。 R倾向于数据的属性而不是绘图,因此绘图函数没有重新排序部件的参数,因为这应该在创建或编辑数据时完成。 reorder函数是重新排序要用于未来图形/分析的因子级别的一种方法。