我想使用 ggplot 绘制以下图:

这是我的 df 结构的一个例子(有点,不按数据比例绘制):
example.df = data.frame(mean = c(0.3,0.8,0.4,0.65,0.28,0.91,0.35,0.61,0.32,0.94,0.1,0.9,0.13,0.85,0.7,1.3),
std.dev = c(0.01,0.03,0.023,0.031,0.01,0.012,0.015,0.021,0.21,0.13,0.023,0.051,0.07,0.012,0.025,0.058),
class = c("1","2","1","2","1","2","1","2","1","2","1","2","1","2","1","2"),
group = c("group1","group2","group1","group2","group1","group2","group1","group2","group1","group2","group1","group2","group1","group2","group1","group2"))
Run Code Online (Sandbox Code Playgroud)
该数据框由 16 个重复组成,每个重复具有给定的平均值和给定的标准偏差。
对于每个重复,我想绘制置信区间,图中示例中的大点是平均估计值,条形的长度是标准偏差的两倍。
另外,我想在同一行中绘制两个不同的副本,但颜色不同,按类别着色,红色是 1 类,蓝色是 2 类。
最后,我想将整个情节划分为对应于两个不同组的两个面板(在同一行中)。
我试着查看这个网站,http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/,但无法弄清楚如何为这个结构的任何数据框自动化这个,有 X 个组(在本例中为 2),并且每组 K 次重复(在本例中为 8、4 个第 1 类和第 4 个第 2 类)。
有没有使用 ggplot 或标准 r pkg 库来做到这一点的好方法?
我想,您提供的样本数据帧不是建立适当的方式,因为所有的值group1有class 1,并在group2所有的类2。所以我制作了新的数据框,还添加了新的列replicate,显示复制的数量(class每个复制四个(有两个值)group)。
example.df = data.frame(mean = c(0.3,0.8,0.4,0.65,0.28,0.91,0.35,0.61,0.32,0.94,0.1,
0.9,0.13,0.85,0.7,1.3),
std.dev = c(0.01,0.03,0.023,0.031,0.01,0.012,0.015,0.021,0.21,
0.13,0.023,0.051,0.07,0.012,0.025,0.058),
class = c("1","2","1","2","1","2","1","2","1","2","1",
"2","1","2","1","2"),
group = rep(c("group1","group2"),each=8),
replicate=rep(rep(1:4,each=2),time=2))
Run Code Online (Sandbox Code Playgroud)
现在您可以使用geom_pointrange()置信区间来获取点并facet_wrap()为每个组绘制图。
ggplot(example.df,aes(factor(replicate),
y=mean,ymin=mean-2*std.dev,ymax=mean+2*std.dev,color=factor(class)))+
geom_pointrange()+facet_wrap(~group)
Run Code Online (Sandbox Code Playgroud)
