2013-05-21 21 views
5

Voglio tracciare diversi istogrammi di dati temporali (1 settimana) sullo stesso grafico delle linee.Istogramma di stampa come linee

Ho dati tempo:

> dput(head(ts)) 
structure(c(1364421605.227, 1364375025.034, 1364376298.393, 1364375002.928, 
1364393158.084, 1364423268.856), class = c("POSIXct", "POSIXt")) 

e voglio tracciare il suo istogramma. hist(ts,breaks=7*24) funziona bene, ma utilizza il tipo di trama h che oscurerà altri grafici dell'istogramma che voglio aggiungere (so che posso usare i colori trasparenti - rainbow con alpha=0.5, ma voglio davvero vedere le linee).

ho cercato

> hist(ts, breaks = 7*24, type="l") 
Warning messages: 
1: In title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...) : 
    graphical parameter "type" is obsolete 
Calls: hist -> hist.POSIXt -> myplot -> plot -> plot.histogram -> title 
2: In axis(2, ...) : graphical parameter "type" is obsolete 
Calls: hist -> hist.POSIXt -> myplot -> axis 
3: In axis(side, at = z, labels = labels, ...) : 
    graphical parameter "type" is obsolete 
Calls: hist -> hist.POSIXt -> myplot -> axis.POSIXct -> axis 

perché è hist passando type a title?

posso creare l'oggetto istogramma e tracciare separatamente:

> h <- hist(ts, breaks=7*24, plot=FALSE) 
> plot(x=h$mids, y=h$density, type="l") 

ma poi l'asse x è marcato con numeri (e.d., "1.364.421,605 mila") non date (ad esempio, "mar 25").

Suppongo che dovrei usare axis, ma preferirei non gestirlo da solo - dopotutto, hist costruisce solo l'asse che voglio!

Grazie!

+0

Beh, sembra che 'hist' letteralmente non è costruito per farlo. Se si guarda il codice per i metodi di stampa, i rettangoli sono letteralmente codificati con una chiamata a 'rect'. Nei metodi POSIX, ha un codice elaborato per costruire gli assi che ti piacciono. Quindi probabilmente dovrai replicare la costruzione di questo asse (o potrebbe esserci una funzione di tracciamento in un pacchetto che lo fa già, chissà). – joran

+0

Inoltre, è possibile vedere il passaggio degli argomenti non utilizzati a 'title' nella pagina di aiuto per' hist', in particolare nella sezione '...'. – Justin

+0

Se si utilizza 'ggplot' invece può mettere i diversi istogrammi l'uno accanto all'altro (usando colori diversi se lo si desidera), rendendo così l'intero problema. Vedi per es. http://docs.ggplot2.org/0.9.3/geom_histogram.html – eddi

risposta

5

Il seguente aspetto è strano perché ci hai fornito solo sei punti dati nel tuo dput. È possibile tracciare un grafico linea senza l'asse delle ascisse e aggiungerlo in seguito in questo modo:

h <- hist(ts, breaks=7*24, plot=FALSE) 
plot(x=h$mids, y=h$density, type="l", xaxt="n") 
axis(1,at=ts,labels=format(ts,"%b-%d")) 

enter image description here

+1

Brillante! ad eccezione del fatto che 'axis' deve essere chiamato' axis (1, at = h $ breaks, labels = format (as.POSIXct (h $ breaks, origin = "1970-01-01"), "% b% d")) ' – sds

+0

Puoi anche farlo apparire meno" strano "scegliendo meno contenitori. – Denise