2013-03-19 167 views
1

這裏是我的.csv文件:如何在x軸上顯示標籤?

dateval,links 
18/03/2013,100 
19/03/2013,200 
20/03/2013,300 
21/03/2013,400 
22/03/2013,500 

該文件讀入一個名爲對象日期1,這是我使用圖表中的數據代碼:

g_range <- range(0, date1$links) 
plot(date1$links, type="o", col="blue", ylim=g_range, 
    axes=FALSE, ann=FALSE) 
axis(1, xlab=date1$links) 
box() 
title(main="Additions", col.main="red", font.main=4) 
axis(2, las=1, at=50*0:g_range[2]) 
title(xlab="Date", col.lab=rgb(0,0.5,0)) 
title(ylab="# Links", col.lab=rgb(0,0.5,0)) 

這裏是產生曲線圖:

enter image description here

日期值不被輸出,而不是數字1 - 5被顯示。我如何修改代碼以便生成.csv文件中包含的日期值?我認爲問題出在這條線上:axis(1, xlab=date1$links)

回答

1

試試這個:

axis(1,at=1:5,labels = date1$dateval) 

所以,你會注意到,如果你在?axis仔細看,你會看到,有沒有xlab說法可言,但第二個和第三個參數是:

at - 要繪製刻度線的點。非限制性的 (無限,NaN或NA)值被省略。默認情況下(當爲NULL時)計算標記位置 ,請參閱下面的'細節'。

標籤 - 這可以是指定 (數值)註釋是否在刻度線被製成,或標籤的 字符或表達載體中,被放置在 tickpoints一個邏輯值。 (其他對象被as.graphicsAnnot強制)如果這個 不合邏輯,at也應該被提供並且長度相同。如果 標籤在強制後長度爲零,則它與提供TRUE的 具有相同的效果。

不過說真的,也許你應該更喜歡這樣做的事情:

date1$dateval <- as.Date(date1$dateval,format = "%d/%m/%Y") 
plot(date1$dateval,date1$links, type="o", col="blue", ylim=g_range, ann=FALSE,axes = FALSE) 
axis(1,at=date1$dateval,labels = date1$dateval) 

但即使是那種粗的方式來處理繪圖相比,使用專門爲此目的設計的包/活動的日期。

+0

打敗我。我還想補充說,OP可能希望通過將'date1 $ dateval'轉換爲'Date'對象來處理不均勻間隔的日期時避免將來出現問題。例如。 - 使用'as.Date(date1 $ dateval,format =「%d /%m /%Y」)' – thelatemail 2013-03-19 22:04:08

+0

@joran日期的數量是動態的,所以上例中的date1對象包含5個日期和值,但它可能包含10個日期等...而不是使用1:5有沒有一個參數值,以適應此? – 2013-03-19 22:06:55

+0

@ user470184(1)計算數據幀中的行數。 (2)將從1到數據幀中的行數傳遞給at。 – joran 2013-03-19 22:08:34