2011-08-12 3 views
1

I는 다음과 같습니다 데이터가 : 내가 찾고 있어요 거의 정확하게 얻을smoothScatter 플롯에서 날짜 필드를 올바르게 포맷하려면 어떻게해야합니까?

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

하지만 숫자로 POSIX 날짜를 변환 :

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

나는 이런 식으로 플롯하면 . 내 물건을 좀 더 읽기 쉽도록 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

관련 문제