6

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

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

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

我得到一个boxploty 轴从 300 到 1000 的 a。我想在那里有“5:00”到“16:40”,只需将秒转换为分钟和秒。

4

2 回答 2

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计算漂亮的刻度线位置,就像 R 在内部做的一样。 ”(来自?axTicks)。

%%会给你除法后的余数,而%/%如果给出,会x %/% y告诉你有多少次x进入y.

最后,sprintf用于格式化字符串,并将填充计算出的秒值以始终0在需要时附加前导,即 -2变为02

在此处输入图像描述

于 2013-02-03T11:30:22.057 回答
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)

在此处输入图像描述

于 2013-02-06T08:41:18.340 回答