我目前正在尝试使用 order 参数使用 ggplot2 对堆叠条形图中的堆栈重新排序。这在不使用 facetting 时就像一个魅力,但在运行 facet_grid 时,只有一个面板有效。重要的是要意识到我想使用自定义订单,而不是基于大小(如本主题或其他有关使用的建议order=desc(variable)
)。
您应该能够使用下面的代码重现此问题
require(dplyr)
require(tidyr)
require(ggplot2)
prod<-1:8
timing<-1:4
variab<-letters[1:3]
nobserv<-length(prod)*length(timing)*length(variab)
values<-runif(nobserv)
plotset<-data.frame(product=rep(prod,each=4,length=nobserv),
timepoints=rep(timing,length=nobserv),
variable=rep(variab,each=nobserv/3),
values=values)
sorter<-rep(c(-2,-1,-3),each=nobserv/3)
p <- ggplot(plotset,aes(fill=variable,order=sorter,x=product,y=as.numeric(as.character(values))))
p <- p + geom_bar(stat='identity', position='stack')
p <- p + facet_grid(~ timepoints)
p
这将生成此图表,清楚地显示只有时间点三 (3) 符合我的要求。
我不知道为什么会这样,是否以及如何解决。提前感谢您的意见!
编辑:我打错了,现在问题应该是可重现的
ps:我可以在带有 R 3.1.1 和 ggplot2 1.0.0 的 linux 和 windows 机器上重现该问题