R ggplot2: usando stat_summary (média) e escala logarítmica
Tenho várias medidas ao longo do tempo e quero plotá-las em R. Aqui está uma amostra dos meus dados. Eu tenho 6 medidas para cada um dos 4 pontos no tempo:
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)))
A escala desses dados é arbitrária e, na verdade, eu vou normalizá-los para que a média de t = 0 seja 1.
norm <- values / mean (values[time == 0])
Por enquanto, tudo bem. Usandoggplot
, Planto os pontos individuais, bem como uma linha que passa pela média em cada momento:
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()
No entanto, agora quero aplicar uma escala logarítmica, e é aí que meu problema começa. Quando eu faço:
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()
A linha NÃO passa por 0 em t = 0, como seria de esperar porque log (1) == 0. Em vez disso, a linha cruza o eixo y ligeiramente abaixo de 0. Aparentemente,ggplot
aplica a médiadepois de transformação de log, que fornece um resultado diferente. Eu quero que isso leve à médiaantes transformação de log.
Como posso eu saberggplot
aplicar a média primeiro? Existe uma maneira melhor de criar este gráfico?