当我boxplot
在 R 中以秒为单位测量一些数据时,如何将 y 轴的刻度从秒更改为分钟和秒?
例如,当我做这样的事情时:
data <- c(298, 507, 1008, 346)
boxplot(data)
我得到一个boxplot
y 轴从 300 到 1000 的 a。我想在那里有“5:00”到“16:40”,只需将秒转换为分钟和秒。
这是一个尝试。它首先关闭 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
“计算漂亮的刻度线位置,就像 R 在内部做的一样。 ”(来自?axTicks
)。
%%
会给你除法后的余数,而%/%
如果给出,会x %/% y
告诉你有多少次x
进入y
.
最后,sprintf
用于格式化字符串,并将填充计算出的秒值以始终0
在需要时附加前导,即 -2
变为02
。
具有功能的替代方案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)