2013-06-17 6 views
1

시계열을 그리는 축을 만들 때 일반적으로 눈금을 만들고 축을 별도로 추가합니다.축 정의 : R

간단한 줄거리는 명령

set.seed(1) 

x <- as.ts(rnorm(1:150)) 

plot <- plot(x, xaxt = "n", yaxt = "n") 

함수

tt = seq(as.Date("1994-03-01"), by="months", length=150) 

tsAxis <- function (tt) { 

    ix <- seq_along(tt) # number of ticks 

    fmt <- "%b-%y" # format of time 

    labs <- format(tt, fmt) # names or labels of dates 

    axis(1, at = tt[ix], labels = labs[ix], 
     tcl = -0.7, cex.axis = 0.7, las = 2) 
} 

에이 answer에서 일련의 명령을 변환 : 나는 많은 시간 시리즈 음모 가지고 있기 때문에 , 나는 다음과 같은 함수를 작성하려 그런 다음 tsAxis (tt)는 축을 그려야하지만 그렇지 않으면 오류도 발생하지 않습니다. 명령을 별도로 입력해도 축을 플롯하지 않습니다.

모든 솔루션?

+0

'axis' 함수에서'at = tt [ix]'매개 변수를'at = ix'로 변경해보십시오. R은 날짜 형식으로 x 축을 갖지 않지만 정수로 보입니다. – ialm

+0

감사합니다. 이제 축이 플롯되었지만 또 다른 질문이 제기됩니다. '<<- seq (1, length (tt), 3)'의 틱 마크의 3 분의 1만을 원한다면 틱과 레이블의 수는 일치하지 않습니다.이 경우 tick 위치를 지정하는 방법은 무엇입니까? – Anusha

+0

줄'ix <- seq_along (tt)'을'ix <- seq (1, length (tt), 3)'로 변경하고 코드를 다시 실행 해 보았습니까? 나를 위해 일하는 것 같습니다. 'tsAxis' 함수에서'axis (1, at = ix, labels = labs [ix], tcl = -0.7, cex.axis = 0.7, las = 2)'를 사용하는 것으로 보입니다. – ialm

답변

1

이 경우 R은 정수가있는 x 축을 나타냅니다 (즉, x = 1은 첫 번째 이벤트, x = 2는 두 번째 이벤트 등). 우리는이 반영하도록 코드를 수정할 수 있습니다

set.seed(1) 
x <- as.ts(rnorm(1:150)) 
# Take a look at the x-axis 
plot <- plot(x) 

: 당신이 코드를 실행하면 당신이 볼 수

tt = seq(as.Date("1994-03-01"), by="months", length=150) 
tsAxis <- function (tt) { 
    ix <- seq_along(tt) # number of ticks 
    fmt <- "%b-%y" # format of time 
    labs <- format(tt, fmt) # names or labels of dates 
    # Change "at=tt[ix]" to "at=ix" here! 
    axis(1, at = ix, labels = labs[ix], 
     tcl = -0.7, cex.axis = 0.7, las = 2) 
} 

아니면 모든 세 번째 눈금을 플롯하려면, 단지 ix <- seq(1, length(tt), 3)ix <- seq_along(tt)을 변경하고 작동해야합니다.