带有geom_point,geom_linerange和类别x的position_dodge

时间:2019-02-06 08:59:47

标签: r ggplot2

我试图显示来自不同回归模型的估计值和置信区间。 (我在帖子中重新创建了一个类似的数据集。)

如何使用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)

0 个答案:

没有答案