J'ai un tas de mesures dans le temps et je veux les tracer dans R. Voici un échantillon de mes données. J'ai 6 mesures pour chacun des 4 points de temps:R ggplot2: en utilisant stat_summary (mean) et l'échelle logarithmique
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)))
L'ampleur de ces données est arbitraire, et en fait, je vais normaliser de sorte que la moyenne de t = 0 est 1.
norm <- values/mean (values[time == 0])
Jusqu'ici tout va bien. En utilisant ggplot
, je tracer les points individuels, ainsi que d'une ligne qui passe par la moyenne à chaque point de temps:
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()
Cependant, maintenant je veux appliquer une échelle logarithmique, ce qui est où ma peine commence . Quand je fais:
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()
La ligne ne passe pas par 0 à t = 0, comme on peut s'y attendre parce que log (1) == 0. Au lieu de cela la ligne traverse l'y-axe légèrement en dessous de 0. Apparemment, ggplot
applique la moyenne après log transformation, ce qui donne un résultat différent. Je veux qu'il prenne la moyenne avant log transformation.
Comment puis-je dire à ggplot
d'appliquer la moyenne en premier? Y a-t-il une meilleure façon de créer ce graphique?
Cela ne pourrait être plus simple. Merci beaucoup! – amarillion
note: 'scale_y_log2' n'existe plus, utilisez' scale_y_continuous' à la place –