2013-05-13 100 views
0

我正在使用R生成一個折線圖並有兩個向量,一個用於x值,另一個用於y值。更具體的說,它是隨着時間的推移積累的表現我可以使用我的數據繪製線(data$AccBH)。但是,當我嘗試把數據y的代碼是這樣的:使用'非日期'x值的x軸標籤

plot(data$Date, data$AccBH, type='l') 

它不工作。在文檔中,我讀了這個「plot(x,y,...)」,所以我想我只需要將y和x的向量放在它們各自的位置。我的x數據是'非日期'日期,例如'Jan-00'。

基本上,我想要的只是從x軸上顯示的y數據中取出一些日期,而不是下圖中的50,100,150 ..到目前爲止,我發現的所有東西都是在X軸上使用「真實日期」。

我剛剛意識到我還無法發佈圖片。所以我應該首先描述我的圖。

如果有人能夠幫助我,那將會很棒。另外,這是我發佈的第一個問題,所以如果您認爲我應該改變發佈問題的方式,請告訴我。謝謝!

+2

請仔細閱讀[這](http://stackoverflow.com/q/5963269/324364)有關如何寫一個問題,爲我們提供了足夠的信息來真正回答它的一些指導。 – joran 2013-05-13 22:01:14

+0

嗨,歡迎來到SO。我相信你會發現這裏有很多人願意幫助你。如果您可以查看@joran鏈接並提供可複製示例的帖子,它可以幫助其他人更有效地幫助您 – 2013-05-13 22:14:01

+0

如果您在Mac上,以下功能會快速將示例數據添加到剪貼板,您可以只需粘貼到這裏:https://raw.github.com/rsaporta/pubR/gitbranch/reproduce.R – 2013-05-13 22:15:01

回答

1

你不能指望R和plot()彌補從任意的字符串,你作爲一個人的理解,但很可能會成爲亂碼計算機數值!

您需要告知R,數據框中的向量Date表示日期 - 在R術語中表示類"Date"的對象。現在,因爲你們沒有那裏的日子,所以我們必須把它們組裝起來 - 每個月的第一天就足夠了。考慮這個簡單的示例數據集

df <- data.frame(Date = paste(month.abb, "13", sep = "-"), 
       AccBH = rnorm(12)) 

我通知ř即Date是通過as.Date()一個"Date"對象。請注意,我正在粘貼01-到已在df中的每個月份組合。還提供了一種合適的format說明符讓R如何「讀」的日期的元素(讀?strftime對於這些細節)

一旦我們有正確的格式的數據,如下所示由str()功能

> str(df) 
'data.frame': 12 obs. of 2 variables: 
$ Date : Date, format: "2013-01-01" "2013-02-01" ... 
$ AccBH: num 0.494 -0.759 -2.204 -2.004 2.808 ... 

plot()作品適當:

plot(AccBH ~ Date, data = df, type = "l") 

產生像(你「就會有不同的數據):

enter image description here

如果你想不同的標籤,那麼你就需要自己指定,例如

plot(AccBH ~ Date, data = df, type = "l", xaxt = "n") 
with(df, axis.Date(side = 1, x = Date, format = "%b-%y")) 

enter image description here

詳情請參閱?axis.Date

請注意,有動物園包具有專門爲今年的數據類型,"yearmon"類。您可以使用此無需通過使用as.yearmon()功能與您的原始數據

df2 <- data.frame(Date = paste(month.abb, "13", sep = "-"), 
        AccBH = rnorm(12)) 

擺弄

require("zoo") 
df2 <- transform(df2, Date = as.yearmon(Date, format = "%b-%y")) 

然後利用由此產生

zobj <- with(df2, zoo(AccBH, order.by = Date)) 

這使變量創建一個"zoo"對象

> zobj 
    Jan 2013  Feb 2013  Mar 2013  Apr 2013  May 2013  Jun 2013 
-0.607986011 1.741046878 -0.603960213 -1.319397405 -0.355051912 0.296862314 
    Jul 2013  Aug 2013  Sep 2013  Oct 2013  Nov 2013  Dec 2013 
0.235978782 -0.308123299 -0.200230379 -0.004428621 -0.858600654 -0.241808594 

然後可以繪製

plot(zobj) 

但要注意它有它的標記軸的自己的路。

enter image description here