0
x <- structure(list(Date = structure(c(15358, 15359, 15362, 15363, 
15364, 15365), class = "Date"), EndTime = structure(c(1327016747, 
1327166720, 1327361839, 1327446733, 1327533097, 1327619504), class = c("POSIXct", 
"POSIXt"), tzone = ""), ThresholdTime = structure(list(sec = c(0, 
0, 0, 0, 0, 0), min = c(0L, 0L, 0L, 0L, 0L, 0L), hour = c(9L, 
9L, 9L, 9L, 9L, 9L), mday = c(20L, 21L, 24L, 25L, 26L, 27L), 
    mon = c(0L, 0L, 0L, 0L, 0L, 0L), year = c(112L, 112L, 112L, 
    112L, 112L, 112L), wday = c(5L, 6L, 2L, 3L, 4L, 5L), yday = c(19L, 
    20L, 23L, 24L, 25L, 26L), isdst = c(0L, 0L, 0L, 0L, 0L, 0L
    )), .Names = c("sec", "min", "hour", "mday", "mon", "year", 
"wday", "yday", "isdst"), class = c("POSIXlt", "POSIXt"))), .Names = c("Date", 
"EndTime", "ThresholdTime"), row.names = c(NA, 6L), class = "data.frame")

xaxis が Date で yaxis が であるグラフを作成し、 を使用してEndTime描画できるようにしたいと考えています。geom_hlineThresholdTime

から %H と % を取り除いてEndTimeに入れることができyaxisます。EndTime基本的に、どのデータ ポイントが違反したかを示そうとしていますThresholdTime

私が直面している問題はこれです:

Endtime<-c("2012-01-02 09:00:00")私のしきい値がThresholdTimeである場合c("2012-01-01 08:00:00")、これをグラフにどのように表示しますか。%H:%Mから取得するEndTimeと、違反しているようには見えませんThresholdTimeが、実際にはしきい値を違反しています。

これに対処するためのご意見をいただければ幸いです。

4

1 に答える 1

2

問題は、時間と分だけではすべての情報を取得できないことです。また、日 (または少なくとも相対日) も必要です。あるいは別の考え方として、相対的な時間が必要です。

x$end <- difftime(x$EndTime, as.POSIXct(x$Date), units="hours")
x$thresh <- difftime(x$ThresholdTime, as.POSIXct(x$Date), units="hours")

ggplot は difftimes を直接処理しないため、強制してから時間単位の同等の数値に変換するだけです。次に、ラベルを時間と分のように少しフォーマットします。

ggplot(x, aes(Date, as.numeric(end))) + 
  geom_point() +
  geom_hline(aes(yintercept=as.numeric(thresh))) +
  scale_y_continuous(labels=function(dt) {
    paste0(sprintf("%02d",floor(dt)),":",sprintf("%02d",floor(60*(dt-floor(dt)))))
  })

ここに画像の説明を入力

于 2013-01-19T00:09:09.243 に答える