2011-08-12 80 views
1

我有一個看起來像這樣的數據:如何在smoothScatter圖中正確格式化日期字段?

> head(data) 
       date price volume 
1 2011-06-26 17:16:05 17.51001 2.000 
2 2011-06-26 20:50:00 14.80351 2.981 
3 2011-06-26 20:51:00 14.90000 2.000 
4 2011-06-26 20:52:00 14.89001 0.790 
5 2011-06-26 20:53:00 15.00000 1.000 
6 2011-06-26 21:05:01 16.20000 6.500 
> str(head(data)) 
'data.frame': 6 obs. of 3 variables: 
$ date : POSIXct, format: "2011-06-26 17:16:05" "2011-06-26 20:50:00" "2011-06-26 20:51:00" "2011-06-26 20:52:00" ... 
$ price : num 17.5 14.8 14.9 14.9 15 ... 
$ volume: num 2 2.98 2 0.79 1 ... 

當我繪製它是這樣的:

someColors <- colorRampPalette(c("black", "blue", "orange", "red"), space="Lab") 
smoothScatter(data, colramp=someColors) 

我得到幾乎正是我要找的,但它的POSIX日期轉換爲數字。我如何更有用地設置x標籤,以便我的東西更具可讀性?

https://img.skitch.com/20110812-nmsrtdbtaey3yqa29g8xkc17tn.png

編輯:我能得到什麼,我想這樣的一個近似值:

smoothScatter(data, colramp=someColors, xaxt="n") 
axis(1, at=data$date, 
    labels=lapply(data$date, function(d) strftime(d, "%F")), 
    tick=FALSE) 

這是非常緩慢的,雖然。看來我應該能夠準備好數據或者向標籤抽屜提供一些建議。

回答

2

就速度而言,它可能有助於指定用於x軸標籤的日期範圍。例如:

days <- seq(min(data$date), max(data$date), by = 'month') 
axis(1, at=days, 
    labels=strftime(days, "%F"), 
    tick=FALSE) 

這也可以幫助時代四捨五入到最近的一天:

days <- seq(as.Date(min(data$date)), as.Date(max(data$date)), by = 'month') 
+0

大,這是因爲它回答我的問題非常有幫助,給了我思考的新途徑的東西。現在我只需要學習如何在那裏打勾。非常感謝。 :) – Dustin