R在函数中迭代设置图例和颜色

时间:2016-12-13 11:54:48

标签: r ggplot2

TL; DR:在绘图中逐步添加线条并在ggplot

中获取图例

我有一组具有相同列名但数值不同的数据帧(请参阅底部的示例数据框)。

我经常需要在一张图上绘制这些数据框,标准差绘制为一条带,如下所示:

a = ggplot() + geom_ribbon(data = na.omit(m), aes(x = Time, ymin=SDmin, ymax=SDplus), alpha = 0.5, fill ="grey") +geom_line(data = na.omit(m), aes(x = Time, y = OD_scaled, color = "Growth")) + xlab("Time (H)") + ylab("OD Scaled")
a + geom_ribbon(data = na.omit(p), aes(x = Time, ymin=SDmin, ymax=SDplus), alpha = 0.5, fill ="grey") +geom_line(data = na.omit(p), aes(x = Time, y = OD_scaled, color = "photo")) + xlab("Time (H)") + ylab("OD Scaled")

Multiple plot

我需要使用不同的数据组合(总是使用相同的数据帧格式)来做很多事情,所以我正在编写一个函数,可以以加法的方式将数据帧添加到绘图中:

plot.OD = function(df, Growth, graph_name) {
  if(missing(graph_name)) {
    graph_name = ggplot()
  }

  graph_name = graph_name + geom_ribbon(data = na.omit(df), aes(x = Time, ymin=SDmin, ymax=SDplus), alpha = 0.5, fill ="grey") +geom_line(data = na.omit(df), aes(x = Time, y = OD_scaled, color = Growth)) + xlab("Time (H)") + ylab("OD Scaled")
  return(graph_name)
}
}

然后我使用:

调用该函数
a = plot.OD(df1,"Mix")
a
#Adding a plot is done like this:
a +  plot.OD(df2,"Photo",a)

这是结果: Second plot

如您所见,图例和颜色未自动分配。

所以我的问题是:如何改进此功能,以便图例自动更新?

请在此link找到两个示例数据框(使用保存功能保存它们)

Time R B W T Tprof    Tmeas    Tcool pH OD_scaled SD SDmin SDplus
0.002777778 0 0 0 0    21 21.13767 3.524333  0         2  0     2      2
0.005555556 0 0 0 0    21 21.12400 3.461333  0        NA NA    NA     NA
0.008333333 0 0 0 0    21 21.11833 3.396333  0        NA NA    NA     NA
0.011111111 0 0 0 0    21 21.11800 3.359333  0        NA NA    NA     NA
0.013888889 0 0 0 0    21 21.12767 3.269333  0        NA NA    NA     NA
0.016666667 0 0 0 0    21 21.12933 3.225667  0        NA NA    NA     NA

1 个答案:

答案 0 :(得分:0)

dplyr绑定行最终成功了