在绘图函数中设置xlim和x轴上的断点

时间:2012-07-31 15:15:49

标签: r plot

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

3 个答案:

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