我有这样的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")))
答案 0 :(得分: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, ...)
答案 1 :(得分:0)
我看到一些问题,首先是xlim
是一个参数而不是一个函数,它应该是xlim=
而不是xlim(
,但是由于paren不匹配我希望是一个错字,最好复制并粘贴你尝试过的实际代码(以及错误,警告,输出等)。
其次,seq函数传递2个字符串,而不是2个日期,您需要将它们显式转换为日期以传递给seq
函数,以便调用正确的方法(并且您可能需要指定2表示小时,而不是分钟,天等。)
如果您向我们提供可重现的示例(使用dput
创建我们可以复制和粘贴的数据)和/或实际输出和消息,那么我们就可以更轻松地为您提供帮助。
答案 2 :(得分:0)
首先,您应该尝试将问题分解为基本问题,即xlim
语句,与plot
无关。您对xlim提供的seq
实际上在做什么:
> seq(c("2012-06-23 01:00:00", "2012-06-23 23:00:00", 2))
[1] 1 2 3
显然这就是问题以及你下一步关注的地方。
其次,您可以非常具体地搜索以R为单位创建日期序列,这将使您进入此question。将它应用于您的问题是微不足道的:
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(...)
。