在y轴上显示分钟和秒的箱线图

6

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

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

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

我得到了一个 y 轴从 300 到 1000 的 boxplot。我想要在那里显示 "5:00" 至 "16:40",只需将秒转换为分钟和秒。

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 变成 02enter image description here

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接