2017-11-08 4 views
1

2つの時点(2回の測定)があり、最初にx軸にプロットし、2番目のプロットをy最初の瞬間から経過した時間を評価することで、最初の時刻から2番目の測定値が最初の時刻(実際にはほとんどの場合は真であるが、すべての場合ではない)の45゜ラインを超えるデータ点を容易に検査することができた。x軸とy軸上に時間のあるプロットを作成する(R)

したがって、日付が2つの列があり、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

アイデアをありがとうございました。

解決策:両方のバージョンが原則として機能しました。私は事前にデータクリーニングをしたなどのラベルの1のより柔軟なので、私は私が使用し、不足しているデータをサブセット化した後ので、ggplotを選択した:

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月の私の2年間の良い休憩していますデータ。

enter image description here

+0

あなたはおそらくデフォルトの軸を抑制して、 'axis.Date()あなたがベースのグラフィックスでほしいと思うところ'自分自身を描画するために使用することができます。あなたのスケッチはまさにあなたが望むものですか? 2ヶ月のラベルと1年?これらのラベルはどこに正確に表示されるべきですか? – MrFlick

+0

これはほんの一例です。結局、私は1年間を1ヶ月持っていたいと思っています。:D私は説明したいと思う約2〜3年のデータを持っています。よろしくお願いします。 – Marco

答えて

1

ggplotは、時間/日付データを理解しています。 :

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を使用して、

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"))) 

今あなたが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

今私の実際のデータのために、私は新しい、小さな問題を持っています。 2番目の時点ではNAがあります(まだ研究を完了していない人もいます)。 「完全なケース」のみについて「ポイント」を変更することはできますか?ありがとうございました – Marco

関連する問題