我想使用Facet_WRAP在x轴上为不同的组绘制不同的值.但是,当使用scale = "free_x"
时,它在每个组中显示唯一的值.请参见下面的示例:
library(ggplot2)
set.seed(1234)
nb = rep(LETTERS[1:3],4)
expand.grid(LETTERS[1:3], 1:3)
df = data.frame(ps = paste(rep(c("ps1","gc1"),6)),
cr = rep(LETTERS[1:3],4),
id = rep(x = month.abb[1:4], each = 3));df
df = df[order(df$ps),]
df[df$ps == "ps1","cr"] <- sample(LETTERS[4:6], size = 6, replace = TRUE)
df.all = rbind(df,df,df,df,df,df)
df.all$val = rnorm(n = nrow(df.all))
ggplot(df.all,
aes(x = cr,
y = val)) +
geom_violin() +
facet_wrap(vars(ps, id),
scales = "free_x",
ncol = 4) +
geom_point(position = position_jitter(width = 0.1, height = 0.1),
alpha= .3)
在这里的图像中(这是上面代码的输出),我添加了缺少的级别.基本上,我希望"gc1"组的水平不会下降.但我也不希望"PS1"中的级别出现在"gc1"中.因此,最终gc1应该只显示级别A、B、C和PS1应该只显示D、E和F.有什么方法可以做到这一点吗?