【发布时间】:2011-09-29 09:00:06
【问题描述】:
我想知道在 x 轴上绘制时间时如何绘制更多刻度线。
基本上,相当于漂亮的时间。很明显,它与时间的关系不太好,因为它使用了 1、2、5 和 10 的因子。对于时间,人们可能想要例如小时,半小时,...
plot(as.POSIXct(x,origin="1960-01-01"),y,type="l",xlab="Time")
给出的刻度线太少且间距太宽。
zoox<-zoo(y,as.POSIXct(stats$Time,origin="1960-01-01"))
plot(zoox)
给出相同的结果。
谢谢
编辑:
只是为了澄清(到目前为止的答案并没有解决我的问题):我正在寻找的是一个类似漂亮日期的功能,例如一个函数,它接受开始日期、结束日期、刻度数,并输出刻度的位置。也就是说,我很清楚可以绘制小时,绘制分钟,以及其他什么,但是相当自动化数字的刻度距离,并且日期的结果函数应该自行决定是否使用天,小时,分钟,秒、毫秒、微秒、30 分钟、500 微秒、5 秒等间隔。无论如何,这就是 pretty 对数字的作用。
EDIT2:
这是我目前用来决定时间轴格式的函数(注意这不适用于日期):
mydiff <- end-start
if(mydiff>1800) {
axis.POSIXct(1,xrange,format="%H:%M")
} else if(mydiff>30) {
axis.POSIXct(1,xrange,format="%H:%M:%S")
} else if(mydiff>0.5) {
axis.POSIXct(1,xrange,format="%H:%M:%OS3")
} else
axis.POSIXct(1,xrange,format="%H:%M:%OS6")
}
我没有增加刻度线的功能,所以我使用默认的刻度线数
【问题讨论】:
-
R 的内部函数不会考虑低于秒的时间单位。
POSIXct类可以处理小数秒,但是围绕这个类的辅助函数通常只在第二级起作用。所以微秒间隔实际上是十进制秒并且必须手动处理。 -
@GavinSimpson:不真实,至少在我的系统上,micros 工作得很好。使用
axis.POSIXct(1,xrange,format="%H:%M:%OS6")在图表中显示它们。让我用适当的功能进行另一次编辑。虽然单位是秒,但它是一个双精度值,精度很高。 -
library(xts); ?axTicksByTime或quantmod:::axTicksByTime2做你想做的事吗? -
@Cookie 对不起,我没有真正表达清楚。我的意思是你不能做
by = "500 microseconds"; R 只理解小数秒并且在秒级别自动处理seq()、axis.POSIXt()等。