如何使用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))
如何在同一画布上绘制处理过的数据?
答案 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()