使用stat_summary()时是否会折线图上点的位置?

时间:2019-02-13 09:10:27

标签: r ggplot2

我正在R中使用ggplot2通过在组级别制作折线图来创建交互图。我注意到,当数据点的值非常接近时,它们可能会重叠。

这个重叠的问题降低了每个单独数据点的可见性和精度。特别是,该图应用了误差线和相互作用线,这些误差线和相互作用线导致了单个图中更多的重叠。

我想知道使用stat_summary()创建折线图时是否可能使数据点抖动?

以下是折线图示例的代码。注意,在此示例中,我没有添加任何错误栏。

df.test <- data.frame(group=rep(c("DG", "SK"), each=2),
                  dose=rep(c("B", "A"),2),
                  gain=c(1.30, 1.80,0.5, 1.7))

ggplot(data=df.test, aes(x=dose, y=gain, group=group)) +
  stat_summary(fun.y = mean,geom = "point")+  
  stat_summary(fun.y = mean,geom = "line",aes(linetype= group))

预期会出现错误栏。

enter image description here

任何评论都非常感谢!干杯

1 个答案:

答案 0 :(得分:0)

似乎添加position = "jitter"不能按预期方式进行。但是您可以通过创建一个新变量(在我的示例中为x_pos)来手动完成此操作:

library(tidyverse)

df.test %>%
  mutate(
    x_pos = +(dose == 'B'),
    x_pos = if_else(group == 'DG', x_pos - .05, x_pos + .05)
  ) %>%
  ggplot(aes(
    x = x_pos,
    y = gain,
    group = group
  )) +
  stat_summary(
    fun.y = mean,
    geom = "point"
  ) +  
  stat_summary(
    aes(linetype = group),
    fun.y = mean,
    geom = "line"
  ) +
  scale_x_continuous(
    breaks = 0:1,
    labels = c("A", "B")
  ) +
  xlab("dose")