R:在y轴上具有分钟和秒的箱线图

时间:2013-02-03 11:02:38

标签: r datetime boxplot

当我boxplot在R中以秒为单位测量一些数据时,如何将y轴的比例从秒改为分钟和秒?

例如,当我做这样的事情时:

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

我得到一个boxplot,y轴从300到1000.我希望将“5:00”改为“16:40”,而只需将秒转换为分钟和秒。

2 个答案:

答案 0 :(得分:8)

这是一次尝试。它首先关闭y轴,然后将数据转换为分钟,并将其作为刻度线添加到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)

提供一点解释:

axTicks计算漂亮的tickmark位置,与R在内部的方式相同。”(来自?axTicks)。

%%会在除法后给你余数,而%/%会在x %/% y给出x时告诉你y进入sprintf多少次。< / p>

最后,0用于格式化字符串,并将计算出的秒值填充为始终附加前导2,如果需要,即 - 02变为{{1}}。

enter image description here

答案 1 :(得分: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