수신 된 메시지 수와 수신 된 시간 수를 플로팅합니다. 예를 들어 , 내 데이터 (I는 CSV에서 읽을 수있는) 다음과 같습니다 : 하루 동안 여러 시간을R ggplot2 데이터가 끊기보다 작을 때 x 축 datetime이 깨집니다.
timestamp count
1398094330 286
1398094340 6279
1398094350 447
1398094360 946
1398094370 719
1398094380 171
1398094390 4
1398094400 42
1398094420 2
일반적으로, 데이터에 걸쳐하지만, 가끔 시간의 작은 창 등으로 제한됩니다 위의 예.
데이터가 일반적으로 그 날에 걸쳐 있기 때문에, scale_x_datetime
의 휴식 시간을 "10 mins"
으로 설정하여 나의 사용 사례의 99 %를 사용할 수 있습니다. 그러나이 경우 실패합니다.
gagplot은 x 축 틱을 표시하지 않으므로 모든 데이터가 약 1 분 동안이 날에 발생하므로 내 휴식 시간이 10 분이므로 실패라고 정의합니다.
결과 ggplot 그래프를 볼 때 메시지가 언제 나타나는지 모르기 때문에 이것은 분명히 유용하지 않습니다.
나는 다른 모든 것이 제대로 작동하지만,이 예제에서는 어떤 종류의 x 축 눈금 마크 표시 방법을 알아낼 수 없습니다.
나는 꽤 들여다 보았지만, 그게 datetime
에서 작동하지 않는 것 같습니다. 휴식 시간을 줄이면 다른 모든 그래프가 복잡 해지고보기가 흐려집니다.
코드 :
tmp = read.csv(args[1])
tmp$time = as.POSIXct(tmp$timestamp, "1970-1-1", tz="America/New_York")
p = ggplot()
p = p + geom_point(tmp, mapping=aes(x=time, y=count), size=1.5)
p = p + scale_y_log10()
p = p + scale_x_datetime(breaks=date_breaks("10 mins"), labels=date_format("%H:%M:%S"))
p = p + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust=0.5))
p = p + labs(title=paste("Message Count, 10 Second Intervals \n", name))
dput : 당신은 많은 초 최대 및 timestamp
값의 최소값 사이에 얼마나 확인하는 date_breaks()
내부 ifelse()
문을 포함 할 수
structure(list(timestamp = c(1398094330L, 1398094340L, 1398094350L, 1398094360L, 1398094370L, 1398094380L, 1398094390L, 1398094400L, 1398094420L), count = c(286L, 6279L, 447L, 946L, 719L, 171L, 4L, 42L, 2L), time = structure(c(1398094330, 1398094340, 1398094350, 1398094360, 1398094370, 1398094380, 1398094390, 1398094400, 1398094420), class = c("POSIXct", "POSIXt"), tzone = "America/New_York")), .Names = c("timestamp", "count", "time"), row.names = c(NA, -9L), class = "data.frame")
참고 : R 버전 3.0.2 – user1324855
데이터의'dput'을 사용하고 있으며 시도한 것의 "작동하는"코드가 도움이 될 것입니다. – hrbrmstr
수정 된 코드를 내 게시물에 추가하십시오. "dput"이 무엇인지에 대한 확신이 없음 – user1324855