我有一些数据,我正在绘制一个值和95% CI。我有四个分组变量,由于一些不可改变的原因,我想只用一个变量来分面。
var1 = as.factor(c("x", "y", "z"))
var2 = as.factor(c("a", "b", "c"))
var3 = as.factor(c("one", "two", "three"))
var4 = as.factor(c("lorem", "ipsum"))
df <- expand.grid(var1, var2, var3, var4)
names(df) <- c("var1", "var2", "var3", "var4")
df$mean <- sample(seq(-10, 10, 0.1), nrow(df), replace = FALSE)
df$stderr <- sample(seq(1, 5, 0.01), nrow(df), replace = FALSE)
df <- df %>%
dplyr::mutate(
up = mean + (1.96 * stderr),
lo = mean - (1.96 * stderr)
)
ggplot(data = df) +
geom_errorbar(aes(x = var1, ymin = lo, ymax = up,
group = var3),
position = position_dodge(width = 0.8),
width = 0) +
geom_point(aes(x = var1, y = mean, fill = var3, group = var3,
shape = var4),
position = position_dodge(width = 0.8), size = 3) +
scale_shape_manual(values = c(21, 22)) +
scale_fill_manual(values = c("blue", "red", "green")) +
facet_wrap(~var2) +
theme_bw()
图看起来几乎完全是我想要的,因为我可以使用position_dodge()
通过一个变量(即在这种情况下是填充变量)。我的挑战是 * 在 * 每个填充颜色中,我希望能够通过形状再次position_dodge()
,以便误差条和点不在x轴上完全相同的位置,因此,不会重叠在彼此的顶部。也就是说,例如在最左边的前两组点中,蓝色正方形和蓝色圆圈位于完全相同的x轴点上,因此误差条完全重叠,但我希望能够将它们减淡到彼此相邻,因此有两个减淡值,var3
* 和 * var4
。
我不知道如何做到这一点,有人知道你是否可以用group =
参数或其他方法来做到这一点吗?谢谢!
1条答案
按热度按时间pqwbnv8z1#
所以在我的所有挖掘中,我发现
group
不能接受多个参数,所以为了达到我想要的终点,我找到了一个可以通过的答案,利用@teunbrand的酷函数facet_nested
从ggh4x
包,和他们的后续答案here。理想情况下,我会有点分组与每个颜色的每个x轴标签旁边的对方,但这绝对工作!