2017-07-06 3 views
3

ggplotの日付ラベルを(一見)論理的な時刻に開始する方法を探しています。私は何度も問題を抱えていましたが、私の現在の問題は休憩をしたいです。01/01/yyyy 私のデータは、POSIXct Dateカラム、Flowカラムにプロットするデータ、およびサイト列。強制的にggplotの縮尺を開始します。 1年目、1月など

library(ggplot2) 
library(scales) 
ggplot(AllFlowData, aes(x=Date, y = Flow, colour = Site))+geom_line()+ 
scale_x_datetime(date_breaks = "1 year", expand =c(0,0),labels=date_format("%Y")) 

私が毎年する休憩を強制することができ、彼らは大丈夫見えるlabels=date_format("%Y")なし(各年1月1日に始まる)が、私はlabels=date_format("%Y")を含む場合(データの10年があるように少し厄介取得します)日付ラベルは〜11月に移動し、私のデータは01/01/1990に始まっても1989年が最初のラベルです。

私は、月の1日または1日に強制的に1日に代わりに深夜にするなど、さまざまな時間ステップでこの問題を数回繰り返しました。これを行う一般的な方法はありますか?

私はcreate specific date range in ggplot2 (scale_x_date)を見てきましたが、私は別の日付範囲で行うにはかなりのプロットがあるので、私は休憩をハードコードしたくありません。

おかげ

+0

データから直接日付範囲を取得することによって、ブレークをハードコードすることなく明示的に設定できます。たとえば、 'library(lubridate); "= 01"))、max(Date))、by = "year") 'で区切られています。または、すべてのデータフレームの範囲全体に及ぶすべてのプロットに対して同じ日付シーケンスベクトルを使用する 'breaks'の日付シーケンスベクトルを作成してください。軸の限界には影響しません。毎年1月1日(または毎月)に各プロットがブレークするようにします。 – eipi10

答えて

2

日付は次のようにベクターにあなたに来る場合:エンドポイントに関する最良の推測をするためにpretty.Dates()を使用

dates <- seq.Date(as.Date("2001-03-04"), as.Date("2001-11-04"), by="day") 
## "2001-03-04" "2001-03-05" "2001-03-06" ... "2001-11-03" "2001-11-04" 

range(pretty(dates)) 
## "2001-01-01" "2002-01-01" 

そしてggplotするために、この範囲を渡します。

scale_x_date()の代わりにcoord_cartesian()をお勧めします。一般的に、値を完全に除外するのではなく、グラフィック境界を切り抜きたい(これは黄土の要約のようなものを混乱させる可能性があります)。

関連する問題