2013-02-03 45 views
5

當我在R中以秒爲單位測量某些數據時,如何將y軸的刻度從秒改變爲分和秒?R:在y軸上用分和秒錶示的盒圖

例如,當我做這樣的事情:

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

我得到一個boxplot從300到1000的Y軸我想有「5:00」爲「16:40」有相反,只需將秒數轉換爲分鐘和秒。

回答

8

這是一個嘗試。它首先關閉y軸,然後將數據轉換爲分鐘,並將其作爲tickmarks添加到y軸。

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) 

提供一點解釋:

計算漂亮對勾標記的位置中,作爲R內部做同樣的方式。」(從?axTicks)。

%%會給你剩下分裂後,雖然%/%的意志,如果給x %/% y告訴你x多少次進入y

最後,sprintf用於格式化字符串和意願墊計算的秒數值總是追加領先0的如果需要的話,即 - 2變得02

enter image description here

+0

這是_exactly_我​​需要的。非常感謝 :-) –

3

與功能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