R ggplot2: используя stat_summary (среднее) и логарифмическую шкалу
У меня есть куча измерений с течением времени, и я хочу построить их в R. Вот пример моих данных. У меня есть 6 измерений для каждого из 4 временных моментов:
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()
Линия НЕ проходит через 0 при t = 0, как и следовало ожидать, потому что log (1) == 0. Вместо этого линия пересекает ось Y немного ниже 0. Очевидно,ggplot
применяет среднеепосле преобразование журнала, которое дает другой результат. Я хочу, чтобы это означалодо преобразование журнала.
Как я могу сказатьggplot
сначала применить среднее? Есть ли лучший способ создать этот график?