当我boxplot
在R中以秒为单位测量一些数据时,如何将y轴的比例从秒改为分钟和秒?
例如,当我做这样的事情时:
data <- c(298, 507, 1008, 346)
boxplot(data)
我得到一个boxplot
,y轴从300到1000.我希望将“5:00”改为“16:40”,而只需将秒转换为分钟和秒。
答案 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}}。
答案 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)