2017-11-08 25 views
1

두 개의 시간 지점 (두 측정 지점)이 있는데, 처음으로 x 축에 그리고 두 번째 점을 y에 표시하고 싶습니다 - 축을 포인트로 사용하므로 두 번째 측정이 첫 번째 시간 이후 인 45 ° - 라인 위의 데이터 포인트를 쉽게 검사 할 수 있습니다 (모든 경우는 아니지만 대부분의 경우에 해당). 첫 번째 순간부터 경과 한 시간을 평가합니다.x 축과 y 축에 시간이있는 플롯 만들기 (R 단위)

그러므로 두 개의 날짜가있는 열을 date 또는 date-time 개 개체로 변환 할 수 있습니다. 지금 당장 동형 변환 할 수 없으므로 어떤 형식을 사용하면 플롯을 쉽게 구현할 수 있습니다.

plot(D$time1, D$time2) 

그러나 나는 또한 일을 플롯하지 않는 수정 버전을 필요로하지만, 휴식 (주, 월, 년)을 가능하게 말할 달 :

D = data.frame(time1 = c("2007-06-22","2007-05-22","2007-05-23"), time2 = c("2007-06-22","2007-05-24","2007-06-05")) 
D$time1 <- strptime(D$time1, format = "%Y-%m-%d") 
D$time2 <- strptime(D$time2, format = "%Y-%m-%d") 
class(D$time1) 
D$time1 <- as.Date(D$time1, format = "%Y-%m-%d") 
class(D$time1) 

나는 쉬운만큼 뭔가가 필요 .

enter image description here

당신에게 아이디어를 많이 감사합니다.

해결책 : 두 버전 모두 원칙적으로 작동했습니다.

library(ggplot2) 
ggplot(mydata, aes(x=t0, y=t1)) + geom_point() + 
    scale_x_date(date_labels = "%b %y", date_breaks = "3 month") + 
    scale_y_date(date_labels = "%b %y", date_breaks = "3 month") 

3개월 내 이년의를위한 좋은 휴식이다 : 하나의 내가 한 등을 라벨에 더 유연한 데이터 클리닝 누락 된 데이터를 부분 집합 후, 내가 사용하므로, 미리가 있기 때문에 나는 ggplot 선택한 데이터.

enter image description here

+0

당신은 아마'axis.Date()가'당신이 기본 그래픽 원하는 어느 곳에 자신을 그리는 데 사용할 다음 기본 축을 억제 할 수 있습니다. 원하는 스케치가 정확히 무엇입니까? 2 개월 표시와 1 년? 이 레이블은 정확히 어디에 표시해야합니까? – MrFlick

+0

그것은 단지 간단한 예일뿐입니다. 결국 주어진 달 동안 모든 달을 갖고 싶습니다. : D 저는 제가 설명하고 싶은 약 2 ~ 3 년의 데이터를 가지고 있습니다. 아마 한 달에 한 번 적당 할 것입니다. 감사합니다 – Marco

답변

1

ggplot 시간/날짜 데이터를 이해한다.

D <- data.frame(time1 = as.Date(c("2007-06-22","2007-05-22","2007-05-23")), 
       time2 = as.Date(c("2007-06-22","2007-05-24","2007-06-05"))) 

지금 당신이 휴식/라벨/등 :

library(ggplot2) 
ggplot(D, aes(x=time1, y=time2)) + geom_point() + 
    scale_x_date(date_labels = "%b %d", date_breaks = "1 week") + 
    scale_y_date(date_labels = "%b %d", date_breaks = "1 day") 
을 지정하는 유연성을 달성하기 위해 scale_x_datescale_y_date를 사용하여, ggplot에 전달할 수 있습니다 : 당신이 질문했던대로 Date 클래스를 사용하여

자세한 내용은 ?scale_x_date을 참조하십시오.

enter image description here

+0

버전이 작동했지만 라벨, 색상 및 디자인이있는 ggplot을 사용하면 더욱 유연 해졌습니다. axis_scale을 버퍼링 할 필요도 없지만 쉽게 전환 할 수 있습니다. 내 데이터의 경우 3 개월 휴식 시간이 걸렸습니다. – Marco

1

당신은 같은 것을 할 수 있습니다 : 여기 내 솔루션입니다

dates_axis <- as.Date(strptime(c("2007-01-01","2007-12-01"), format = "%Y-%m-%d")) 
dates_axis <- seq.Date(dates_axis[1],dates_axis[2],"month") 

oldpar <- par() 
par(mar = c(6,6,1,1)) 
plot(dates_axis,dates_axis, 
    xaxt = "n", 
    yaxt = "n", 
    bty = "n", 
    type = "n", 
    xlab = "", 
    ylab = "") 
axis(1, at = dates_axis, labels = months(dates_axis), las = 2) 
axis(2, at = dates_axis, labels = months(dates_axis), las = 1) 
points(D$time1, D$time2, pch = 20) 
abline(a = 0, b = 1) 
par(oldpar) 

enter image description here

+0

내 데이터에 솔루션을 적용하려고합니다. 위에서 언급했듯이. 이 솔루션은 JAN/FEB의 경우 매우 손수입니다. 적어도 2 년 동안의 데이터가 있습니다. 예를 들어 24 개월이 표시되어야합니다. 주어진 간격에 대해 dates_axis를 어떻게 만들 수 있습니까? – Marco

+0

나는 내 솔루션을 편집했다. 첫 번째 줄'as.Date (strptime (c) "2007-01-01", "2007-12-01"), format = "% Y - % m- % d "))'. –

+0

확인. 이제 실제 데이터에 대해 새롭고 작은 문제가 생겼습니다. 두 번째 시점에는 일부 NA가 있습니다 (일부 사람들은 아직 연구를 완료하지 않았습니다). "전체 사례"에 대해서만 '지점'을 수정할 수 있습니까? 고마워요. – Marco