2012-07-31 47 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, ...)