2013-05-21 4 views
5

Ich möchte mehrere Histogramme von Zeitdaten (1 Woche lang) auf der gleichen Handlung als Linien plotten.Plot Histogramme als Linien

Ich habe Zeitdaten:

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

und ich möchte sein Histogramm zeichnen. hist(ts,breaks=7*24) funktioniert gut, aber es verwendet den h Plot-Typ, der andere Histogramm-Plots verdecken wird, die ich hinzufügen möchte (ich weiß, dass ich transparente Farben verwenden kann - rainbow mit alpha=0.5, aber ich möchte wirklich die Zeilen sehen).

versuchte ich

> 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 

warum histtype zu title vorbei ist?

Ich kann das Histogramm-Objekt erstellen und es separat Grundstück:

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

aber dann die x Achse mit Zahlen markiert (E. D., „1364421605“) nicht Daten (zum Beispiel „25. März“).

Ich denke, ich sollte axis verwenden, aber ich würde lieber nicht selbst damit umgehen - schließlich baut hist nur die Achse, die ich will!

Danke!

+0

Nun, es scheint, dass 'hist' wahrsten Sinne des Wortes nicht, das zu tun ist, gebaut. Wenn Sie sich den Code für die Plot-Methoden ansehen, werden die Rechtecke buchstäblich mit einem Aufruf von 'rect' hartcodiert. In den POSIX-Methoden hat es einen durchdachten Code zum Konstruieren der Achsen, die Sie mögen. Sie müssen wahrscheinlich diese Achsenkonstruktion replizieren (oder es kann eine Plotfunktion in einem Paket geben, das dies bereits tut, wer weiß). – joran

+0

Sie können auch den Durchlauf nicht verwendeter Argumente zu 'title' auf der Hilfeseite für' hist' sehen, speziell im Abschnitt '...'. – Justin

+0

Wenn Sie stattdessen "ggplot" verwenden, können Sie die verschiedenen Histogramme nebeneinander platzieren (wenn Sie möchten, andere Farben verwenden), wodurch das gesamte Problem problematisch wird. Siehe z.B. http://docs.gplplot2.org/0.9.3/geom_histogram.html – eddi

Antwort

5

Das folgende sieht seltsam aus, weil Sie uns nur sechs Datenpunkte in Ihrem dput gaben. Sie können ein Liniendiagramm ohne die x-Achse plotten und fügen Sie es danach wie folgt:

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

Brilliant! außer dass "axis" sollte "axis" genannt werden (1, at = h $ breaks, labels = format (as.POSIXct (h $ breaks, herkunft = "1970-01-01"), "% b% d")) ' – sds

+0

Sie könnten es auch weniger" komisch "aussehen lassen, indem Sie weniger Fächer wählen. – Denise