如何使用R ggplot2.qplot绘制带有误差线的两条曲线

时间:2017-09-13 21:01:19

标签: r ggplot2

如何使用ggplot.qplot在一个图表上放置带有误差线的两个图形。

我已经使用this帖子绘制了一个带错误条的图表:

library(ggplot2)
time_points = c(15,  30,  60,  90, 120, 150, 180)
control_data = c(1,2,3,4,5,6,7)
control_sd = c(0,1, 0.2, 0.3, 0.4, 0.5, 0.6)


treated_data = c(9,8,7,6,5,4,3)
treated_sd = c(0,1, 0.4, 0.6, 0.8, 0.8, 0.9, 1.5)

qplot(time_points, control_data) + geom_errorbar(aes(x = time_points,
                                                 ymin = control_data - control_sd,
                                                 ymax = control_data + control_sd))

哪个产生: enter image description here

如何在同一画布上绘制处理过的数据?

1 个答案:

答案 0 :(得分:2)

注意我调整了给定的向量来创建数据帧。

library(ggplot2)
library(dplyr)
library(tidyr)
library(magrittr)

time_points = c(15,  30,  60,  90, 120, 150, 180)
control_data = c(1,2,3,4,5,6,7)
control_sd = c(0, 1, 0.2, 0.3, 0.4, 0.5, 0.6)

treated_data = c(9,8,7,6,5,4,3)
treated_sd = c(0.1, 0.4, 0.6, 0.8, 0.8, 0.9, 1.5)

df <- data.frame(time=time_points,
  cd=control_data,
  td=treated_data,
  csd=control_sd,
  tsd=treated_sd)

df %>%
  # stack the control and treated columns using tidyr's gather
  # from here we distinguish the different series by the type column
  gather(type,value,cd,td) %>% 
  # append a column for error bar ymin, depending on stacked type
  mutate(ymin=ifelse(type=='cd',value-csd,value-tsd)) %>% 
  # append a column for error bar ymax, depending on stacked type
  mutate(ymax=ifelse(type=='cd',value+csd,value+tsd)) %>%
  # pass the revised data frame to ggplot with the computed aesthetics
  ggplot(aes(x=time,y=value,color=type,ymin=ymin,ymax=ymax)) +
  geom_errorbar() +
  geom_point()

enter image description here