我希望强制 facet_wrap 从左上角开始填充,但要以一种始终完全填充底行的方式进行。也就是说,从左上角开始加上必要的水平偏移量,以完全填充底部行。
library(ggplot2)
n <- 1000
df <- data.frame(x=runif(n), y=rnorm(n), label=sample(letters[1:7], size=n, replace=TRUE))
df$label.rev <- factor(df$label, levels=sort(unique(df$label), decreasing=TRUE))
p <- ggplot(df, aes(x=x, y=y)) + geom_point()
p1 <- p + facet_wrap(~ label, ncol=3)
p2 <- p + facet_wrap(~ label, ncol=3, as.table=FALSE)
p3 <- p + facet_wrap(~ label.rev, ncol=3, as.table=FALSE)
p1: 我很满意标签从左到右、从上到下的顺序,但我想把间隙放在左上角而不是右下角。
p2: 间隙现在在第一行(不幸的是在右上而不是左上),但标签顺序是错误的。
p3: 类似于p2;尝试修复标签顺序,但失败了。
我希望这些方面按照以下顺序排序:
_ _ A
B C D
E F G
我想让整个底部行都有坐标轴,因为我认为这比默认设置更美观。我该如何做到这一点?
df$label.new<-factor(df$label, levels=c(" "," ",levels(df$label)))
,然后再加上p+facet_wrap(~ label.new, ncol=3,drop=FALSE)
。 - Didzis ElfertsstringsAsFactors=FALSE
,这就解释了为什么我不得不使用levels(df$label)
而不是unique()
才能使它正常工作。 - baptiste