0

我有一个这样的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")

我正在尝试将轴中的中断设置为每 2 小时显示一次 xaxis 刻度线,如下所示:

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")))
4

3 回答 3

2

即使正确指定 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, ...)
于 2014-03-25T23:21:43.833 回答
0

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

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

如果您给我们一个可重现的示例(用于dput创建我们可以复制和粘贴的数据)和/或实际输出和消息,那么我们可以更轻松地为您提供帮助。

于 2012-07-31T15:34:03.317 回答
0

首先,您应该尝试将您的问题分解为基本问题,即xlim声明,而不是与plot. 你实际上在用seq你提供给 xlim 的东西做什么:

> 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(...)

于 2012-07-31T15:38:27.657 回答