これは、ファセット変数を因子に変換してから再平準化することで実行できます。関数では、レベルの順序付けrelevel.byrow
に使用matrix(..., byrow=T)
し、関数を使用してこの行列をベクトルに変換し、c()
係数を再平準化しました。
#number of columns
nc <- 2
level.byrow <- function(vec, nc){
fac <- factor(vec) #if it is not a factor
mlev <- matrix(levels(fac), nrow=nc, byrow=T)
factor(fac, levels= c(mlev))
}
library(plyr)
ggplot(transform(mtcars, rcarb=level.byrow(carb, nc)), aes(x=gear, y=mpg, fill=vs)) +
geom_bar(position="dodge", stat="identity") +
facet_wrap(~ rcarb, ncol=nc)
plyr
便宜上使用しました。単純に書くことができます
mtcars$rcarb <- level.byrow(mtcars$carb, nc)
これは、完全なファセット構造がない場合にも機能しますが、いくつかの警告が表示されます。
mtcars2 <- subset(mtcars, carb!=3)
ggplot(transform(mtcars2, rcarb=level.byrow(carb, nc)), aes(x=gear, y=mpg, fill=vs)) +
geom_bar(position="dodge", stat="identity") +
facet_wrap(~ rcarb, ncol=nc)
carb==3
除外した結果: