我试图显示来自不同回归模型的估计值和置信区间。 (我在帖子中重新创建了一个类似的数据集。)
如何使用position_dodge
,以便对于不同数量的组,点和线具有相同的距离。 (请注意,示例中的第一个绘图中的点和线相距较远。)
目前,我可以通过width
手动计算位置躲闪的constant * nlevels(x)
自变量,但是我希望有一种不需要此方法的解决方案。
我尝试使用不同的preserve
值,但是我不太确定参数的作用。同样,我也没有发现点和线的宽度是多少,如果它们在geom_bar
中完全一样,那么宽度会更清晰。 (比较这个问题:What is the width argument in position_dodge?)
require(ggplot2)
set.seed(42)
N_x <- 3
N_group <- 4
testdata <- data.frame(
a = rep(LETTERS[1:N_x], each=N_group),
b = rep(letters[1:N_group], N_x),
c = c(rep(1, N_group), exp(rnorm(N_group*(N_x-1))))
)
testdata$ci_width <- c(rep(NA, N_group), exp(rt(N_group*(N_x-1), 10)))
testdata$c_lower <- testdata$c - testdata$ci_width
testdata$c_upper <- testdata$c + testdata$ci_width
testdata <- testdata[order(testdata$b), ]
testdata
ggplot(testdata[1:6, ], aes(x=a, y=c, ymin=c_lower, ymax=c_upper, group=b, shape=b)) +
geom_point(position = position_dodge(.125), size=3) +
geom_linerange(position = position_dodge(.125)) +
geom_hline(yintercept = 1)
ggplot(testdata, aes(x=a, y=c, ymin=c_lower, ymax=c_upper, group=b, shape=b)) +
geom_point(position = position_dodge(.125), size=3) +
geom_linerange(position = position_dodge(.125)) +
geom_hline(yintercept = 1)