2012-07-31 59 views
0

我有一个这样的DF X轴断裂:设置XLIM和绘图功能

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

我想设置在轴上的休息,以显示x轴的刻度标记每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"))) 

回答

0

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

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

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

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按小时创建日期序列,这会让你到这个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(...)

+0

问题是,我可以绘制此数据,但xaxis没有显示所有的值。它只显示几个小时。我想显示每小时或每两小时刻度标记。我一直在寻找这个相当长的一段时间,没有进展 – 2012-07-31 15:47:30

+0

请参阅@Greg Snow编辑您的问题的答案。 – Andy 2012-07-31 15:59:30

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