2016-10-27 8 views
0

数値と継続時間を含むデータをプロットしたい。文字ベクトルの変換のために私はlubridateパッケージを選択しました。残念ながら、継続時間は常にx軸に秒単位で表示されます。軸ラベリングのためのフォーマット潤滑時間幅カラム

set.seed(20161027) 
a <- c("00:30:45", "00:59:07", "01:08:30", "02:10:09", "02:20:53") 
b <- rnorm(n = 5) 
example <- data.frame(a, b) 
# This is what I want 
ggplot(data = example, aes(x = a, y = b)) + 
geom_point() 
library(lubridate) 
a <- hms(a) 
a <- as.duration(a) 
example <- data.frame(a, b) 
ggplot(data = example, aes(x = a, y = b)) + 
geom_point() 

これは私のように見えます。 correct

これは現在の外観です。 wrong lubridate時間をよりきれいな形式にフォーマットする方法はありますか?または、軸ラベルの文字ベクトルを保持する必要がありますか?

答えて

1

私はHubertLのソリューションは十分です@と思うが、あなたはlubridateを使用して主張すれば、私はこのソリューションに使用するにもかかわらず、あなたは

library(lubridate) 
set.seed(20161027) 
a <- c("00:30:45", "00:59:07", "01:08:30", "02:10:09", "02:20:53") 
b <- rnorm(5) 
example <- data.frame(a=hms(a), b=b) 

ggplot(data = example, aes(x = a$hour + a$minute/60 + a$second/60^2, y = b)) + 
    geom_point() + 
    scale_x_continuous(name="a", 
         breaks=c(0.5, 1, 1.5, 2), 
         labels=c("00:30", "01:00", "01:30", "02:00")) 
2

lubridateでこれを行う理由がわかりません。 as.POSIXctを使用することにより:

a <- as.POSIXct(c("00:30:45", "00:59:07", "01:08:30", "02:10:09", "02:20:53"), 
       format="%H:%M:%S") 
b <- rnorm(n = 5) 
example <- data.frame(a, b) 
ggplot(data = example, aes(x = a, y = b)) + 
    geom_point() 

enter image description here

+0

を試すことができます@ kitman0804は質問への答えを提供しました。私は 'lubridate'を使っていました。なぜなら、デュレーションクラスは(日付がないので)データのより良い表現のように感じたからです。私はそれが私の場合に余分なマイルの価値がないと思う。 – mrub

関連する問題