r-在绘图函数中设置x轴上的xlim和breaks



我有一个如下的df:

Value   Time
10      2012-06-23 01:00:00
20      2012-06-23 02:00:00

时间被格式化为as.PoSIXct(df$Time, format="%Y-%m-%d %H:%M:%S")

我正试图设置轴上的中断,以显示xaxis刻度线每2小时一次,如下所示:

plot(df$Time, df$Value, ylim(0,100), xlim(seq(c("2012-06-23 01:00:00", "2012-06-23 23:00:00", 2)))

我得到无效的xlim值。有什么想法吗?

我试过这条线,仍然不起作用:

plot(df$Time, df$Value, col="red", type="l", xlab="Date", ylab="% Memory Utilization", xlim=seq(c(as.POSIXct("2012-06-23 01:00:00"), as.POSIXct("2012-06-23 23:00:00"), by="hour")))

即使正确指定xlim=并使用POSIXlt格式的日期,我也遇到了类似的问题。我怀疑问题是R对约会不太友好。我用类似的方法解决了这个问题:

my.limits <- c("2012-06-23 01:00:00", "2012-06-23 23:00:00")  # example data
my.limits <- as.numeric(my.limits)  # new step to convert data
plot(..., xlim = my.limits, ...)

我看到了一些问题,首先是xlim是一个参数,而不是函数,应该是xlim=而不是xlim(,但由于paren不匹配,我认为这是一个拼写错误,最好复制并粘贴您尝试的实际代码(以及错误、警告、输出等)。

其次,seq函数传递的是2个字符串,而不是2个日期,您需要明确地将它们转换为日期以传递给seq函数,以便调用正确的方法(您可能需要指定2指的是小时,而不是分钟、天等)。

如果您给我们一个可复制的示例(使用dput创建我们可以复制和粘贴的数据)和/或实际输出和消息,那么我们可以更容易地帮助您。

首先,您应该尝试将问题分解为基本问题,即xlim语句,而不是与plot有关的任何问题。你实际在用你提供给xlim:的seq做什么

> seq(c("2012-06-23 01:00:00", "2012-06-23 23:00:00", 2))
[1] 1 2 3

很明显,这就是问题所在,也是你下一步的重点所在。

其次,你可以非常具体地搜索关于按小时在R中创建日期序列的信息,这会让你想到这个问题。将它应用于你的问题是微不足道的:

seq(as.POSIXct("2012-06-23 01:00:00"), as.POSIXct("2012-06-23 23:00:00"), by="hour")

哪个给出:

 [1] "2012-06-23 01:00:00 MDT" "2012-06-23 02:00:00 MDT" "2012-06-23 03:00:00 MDT" "2012-06-23 04:00:00 MDT"
# all the other rows...
[21] "2012-06-23 21:00:00 MDT" "2012-06-23 22:00:00 MDT" "2012-06-23 23:00:00 MDT"

此外,您还错误地为绘图函数指定了参数。您应该使用xlim=,而不是xlim(...)

最新更新