随着时间的推移,我有一堆测量值,我想在 R 中绘制它们。这是我的数据样本。我对 4 个时间点中的每一个进行了 6 次测量:
values <- c (1012.0, 1644.9, 837.0, 1200.9, 1652.0, 981.5,
2236.9, 1697.5, 2087.7, 1500.8,
2789.3, 1502.9, 2051.3, 3070.7, 3105.4,
2692.5, 1488.5, 1978.1, 1925.4, 1524.3,
2772.0, 1355.3, 2632.4, 2600.1)
time <- factor (rep (c(0, 12, 24, 72), c(6, 6, 6, 6)))
这些数据的尺度是任意的,实际上我要对其进行归一化,使 t=0 的平均值为 1。
norm <- values / mean (values[time == 0])
到现在为止还挺好。使用ggplot
,我绘制了两个单独的点,以及在每个时间点通过平均值的一条线:
require (ggplot2)
p <- ggplot(data = data.frame(time, norm), mapping = aes (x = time, y = norm)) +
stat_summary (fun.y = mean, geom="line", mapping = aes (group = 1)) +
geom_point()
但是,现在我想应用对数刻度,这就是我的麻烦开始的地方。当我做:
q <- ggplot(data = data.frame(time, norm), mapping = aes (x = time, y = norm)) +
stat_summary (fun.y = mean, geom="line", mapping = aes (group = 1)) +
geom_point() +
scale_y_log2()
这条线在 t=0 时不通过 0,因为 log (1) == 0。相反,这条线穿过 y 轴略低于 0。显然,在对数转换后ggplot
应用平均值,这给出了不同的结果。我希望它在对数转换之前取平均值。
我怎么知道ggplot
先应用平均值?有没有更好的方法来创建这个图表?