至于我可以告诉facet_wrap
按行填充。 以同样的方式,你可以指定如何填充matrix
与byrow
我希望你可以做同样的facet_wrap。 我知道我可以重新排序的一个因素的水平,这满耳绘制但是这似乎有点像工作的,如果有那我俯瞰较短的方法。
library(ggplot2)
ggplot(mtcars, aes(x=gear, y=mpg, fill=vs)) +
geom_bar(position="dodge", stat="identity") +
facet_wrap(~ carb, ncol=2) #fills by row
我们怎样才能填补列?
它可以通过小面的变量转化为因子来完成,然后重新练级吧。 在功能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
除外:
该功能在GitHub上GGPLOT2的当前的开发版本中实现。 这个承诺实现了一个新的参数dir
的facet_wrap
,所以你根本就
## "v" for vertical or "h" for horizontal (the default)
ggplot(...) + facet_wrap(~ carb, ncol=2, dir="v")
注意,此功能目前无法使用在CRAN的版本。