如果您提供的分组变量是 not 因子,请不要依赖 factor() 强制的水平或 ggplot 内部的默认水平排序 . 自己明确设置级别 .
dat <- data.frame(x = runif(100), y = runif(100),
Group = gl(5, 20, labels = LETTERS[1:5]))
head(dat)
with(dat, levels(Group))
如果我想要这个任意顺序怎么办?
set.seed(1)
with(dat, sample(levels(Group)))
为此,请按照您希望的方式设置级别 .
set.seed(1) # reset the seed so I get the random order form above
dat <- within(dat, Group <- factor(Group, levels = sample(levels(Group))))
with(dat, levels(Group))
现在我们可以使用它来按照我们想要的顺序绘制面板:
require(ggplot2)
p <- ggplot(dat, aes(x = x)) + geom_bar()
p + facet_wrap( ~ Group)
2 回答
如果您提供的分组变量是 not 因子,请不要依赖
factor()
强制的水平或ggplot
内部的默认水平排序 . 自己明确设置级别 .如果我想要这个任意顺序怎么办?
为此,请按照您希望的方式设置级别 .
现在我们可以使用它来按照我们想要的顺序绘制面板:
哪个产生:
只是在处理类似的问题 . 我的级别默认情况下看起来像这样:
请注意,由于字母顺序,第二级不合适 .
这是我正在做的修复订单:
它将“A1”等级替换为“A01”,然后根据这些重新排序 . 我相信你可以更有效地做到这一点,但它确实能够做到这一点 .
它可以适应解决原始问题 .