Poiché i dati sono stati replicati e si desidera rappresentare media/CL, è preferibile utilizzare stat_summary(...)
che è stato progettato per (è stato indovinato) il riepilogo dei dati. Fondamentalmente, applica una funzione a tutti i valori y per ogni valore x (ad esempio, la funzione mean(...)
) e quindi traccia il risultato utilizzando qualsiasi geometria specificata. Ecco un esempio:
# sample data - should be provided in question
set.seed(1) # for reproducible example
time <- 1:25
df <- data.frame(time,
pop=rnorm(100*length(time), mean=10*time/(25+time)))
library(ggplot2)
ggplot(df, aes(x=time, y=pop))+
stat_summary(geom="ribbon", fun.data=mean_cl_normal, width=0.1, conf.int=0.95, fill="lightblue")+
stat_summary(geom="line", fun.y=mean, linetype="dashed")+
stat_summary(geom="point", fun.y=mean, color="red")
Quindi qui abbiamo 3 strati: uno strato che riassume i valori y utilizzando la funzione mean(...)
e diagrammi utilizzando geom="line"
, uno strato che riassume allo stesso modo ma piazzole usando geom="point"
e un layer che usa geom="ribbon"
Questa geom richiede l'estetica ymin
e ymax
, quindi usiamo la funzione ggplot integrata mean_cl_normal
per generare quelli basati sul presupposto che l'errore sia distribuito normalmente e che, quindi, il mezzo segua un -distribuzione. Digitare ?hmisc
per la documentazione sulle varie funzioni utili per i limiti di confidenza. I layer eseguono il rendering nell'ordine del codice, quindi, dal momento che si desidera l'ombreggiatura, è necessario inserire prima il nastro di errore.
Infine, è ovviamente possibile riepilogare i dati da soli, utilizzando dplyr
o alcuni di essi, ma non vedo davvero il punto di farlo.
Aggiornamento (sulla base di recenti commenti): sembra la versione più recente di ggplot2
(2.0.0) ha un modo diverso di specificare gli argomenti da fun.data
. Questo funziona nella nuova versione:
ggplot(df, aes(x=time, y=pop))+
stat_summary(geom="ribbon", fun.data=mean_cl_normal,
fun.args=list(conf.int=0.95), fill="lightblue")+
stat_summary(geom="line", fun.y=mean, linetype="dashed")+
stat_summary(geom="point", fun.y=mean, color="red")
Il problema con l'argomento width=...
è un po 'più sottile penso: in realtà non è necessario (nella risposta originale che ho usato barre di errore, e si è dimenticato di togliere questo argomento quando l'ho cambiato in nastro). La versione precedente di ggplot2 ignorava gli argomenti estranei (quindi, nessun errore). La nuova versione, evidentemente, è più severa. Probabilmente è meglio
Dovresti controllare qui: http://www.cookbook-r.com/Graphs/Plotting_means_and_error_bars_(ggplot2)/ – AntoniosK
Dai un'occhiata anche a "? Stat_smooth'. – Jaap
Dato che sei relativamente (relativamente) nuovo di SO, leggi [this] (http://stackoverflow.com/help/mcve) e [this] (http://stackoverflow.com/questions/5963269/how-to -make-a-great-r-reproducible-example/5963610 # 5963610) su come porre una domanda ben fatta che è più probabile che abbia una risposta. – jlhoward