当我在R中用boxplot
绘制以秒为单位测量的数据时,如何将y轴的刻度从秒改为分钟和秒?
例如,当我做类似这样的事情时:
data <- c(298, 507, 1008, 346)
boxplot(data)
我得到了一个 y 轴从 300 到 1000 的 boxplot
。我想要在那里显示 "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)