2013-02-03 10 views
5

Wenn ich boxplot einige Daten in Sekunden in R gemessen, wie kann ich die Skala der Y-Achse von Sekunden zu Minuten und Sekunden ändern?R: Boxplot mit Minuten und Sekunden in Y-Achse

Zum Beispiel, wenn ich so etwas tun:

data <- c(298, 507, 1008, 346) 
boxplot(data) 

Ich bekomme ein boxplot mit einer y-Achse von 300 bis 1000. Ich mag würde „05.00“ bis „16.40“ dort haben Stattdessen werden einfach die Sekunden in Minuten und Sekunden umgewandelt.

Antwort

8

Hier ist ein Versuch. Zuerst wird die y-Achse deaktiviert und dann werden die Daten in Minuten konvertiert und als Häkchen zur y-Achse hinzugefügt.

data <- c(298, 507, 1008, 346) 
boxplot(data, yaxt="n") 
at <- axTicks(2) 
axis(2, at=at, labels=sprintf("%d:%02d", at %/% 60, at %% 60), las=1) 

Um eine kleine Erklärung liefern:

"Ermittelt ziemlich Häkchen Orten die gleiche Art und Weise wie R intern tut." (Aus ?axTicks).

%% geben Ihnen den Rest der Division, während %/% Willen gegeben, wenn x %/% y Sie sagen, wie oft x in y geht.

Schließlich wird sprintf für die Formatierung von Strings und Tampon den berechneten Wert Sekunden früher immer 0 ‚s append führt, falls erforderlich, das heißt - 2 wird 02.

enter image description here

+0

Dies ist _exactly_ was ich brauchte. Danke vielmals :-) –

3

Eine Alternative mit Funktion axis.POSIXct:

data <- c(298, 507, 1008, 346) 
data2 <- as.POSIXct(data, origin=cut(Sys.time(), "hours")) 
boxplot(data2, pars=list(yaxt="n")) 
axis.POSIXct(2, at=pretty(data2), format="%M:%S", las=2) 

enter image description here

Verwandte Themen