2017-10-23 13 views
1

これは、プロットの軸にラベルを付けるためのラベルベクトルを作成する私の「古い」方法です。ラベリング軸のR lubridateインターバルクラス

require(lubridate) 
require(dplyr) 

#old 
version <- "201710" 
endDate = as.Date(paste0(version,"01"), "%Y%m%d")           
startDateString = paste0(as.integer(substr(version, 1, 4)) - 3,substr(version, 5, 6)) 
startDate = as.Date(paste0(startDateString,"01"), "%Y%m%d")        
datehv <- format(seq(startDate, endDate, "3 months"), "%Y-%m")        

zeitbereich = c()          
for(i in 1:(length(datehv)-1)) {    
    zeitbereich = c(zeitbereich, datehv[i], "", "")  
} 
    zeitbereich = c(zeitbereich, datehv[length(datehv)]) 
labels <- substr(zeitbereich,1,7) 

以下は新しいバージョンです。アイデアは、私は新しい時間間隔から生成される古いコードのようなベクトル「ラベル」を取得することができますどのように読みやすくし、簡単な構文

#new 
version2 <- "201710" 
endDate2 = ymd(paste0(version,"01")) 
startDate2 = endDate2 - dyears(3) 
zeitbereich2 <- interval(startDate2, endDate2) 

ためlubridateとdplyrを使用することですか?ラベルベクトル

+0

これを使ってggplotにラベルを付けるのですか?あなたはテーマでこれをよりよく変えるかもしれませんか? – User632716

+0

それは良い質問です:プロットはかなり複雑で、現在ベースrです。プロットがggplotのようにできるかどうかわかりません...(ライン、ボックスプロット、指定した時点の値に応じて塗りつぶしの色を変更する長方形のカスタムスケールで構成されます) –

答えて

1

に私は日付などの日付を続けるだろう「「」空組み込む#oldのラベルベクトル

B)におけるスポット」を無視して

A)。 seq.Date関数を使用して四半期情報を追加し、最後に書式を変更します。

私はそれが空白を追加するための最良の解決策であることがわかっているから、あなたのループを変更しません、と言った、私はこれらの空白が必要な理由を評価するだろう、

st <- as.Date("20140101", "%Y%m%d") 
en <- as.Date("20170101", "%Y%m%d") 

quarters <- seq.Date(from = st, to = en, "quarter") 

readable <- format(quarters, as.character("%Y-%m")) 

zeitbereich = c()          
for(i in 1:(length(readable)-1)) {    
    zeitbereich = c(zeitbereich, readable[i], "", "")  
} 
zeitbereich = c(zeitbereich, readable[length(readable)]) 
+0

グラフの非ラベルティックには空白が必要です(それは純粋に美容的です)。しかしこれはもっと良い選択肢かもしれません。私はそれを調べる必要があります。 –

+0

@alxもしあなたのグラフコードを書いたら、見てみればうれしいですか?別の質問でそれをやってみるのが一番良いでしょう。幸運 – User632716

+0

私はこのオプションが助けになるかもしれません一度私は仕事をする日付形式を得ました。 https://stackoverflow.com/questions/31732597/how-to-not-show-all-labels-on-ggplot-axis –

1

だから私はやった。

df2 <- data.frame(
    date = seq(Sys.Date(), len=100, by="1 day")[sample(100, 50)], 
    price = runif(50) 
) 
df2 <- df2[order(df$date), ] 

st2 <- ymd("19960101") 
en2 <- ymd("20000201") 
months2 <- seq.Date(from = st2, to = en2, by = "month") 

mutate(df2, date=months2) 

b <- ggplot(df, aes(x=date, y=price)) + geom_line() 
b + scale_x_date(date_breaks = "2 months") 

scale_x_dateが動作するためには、日付列が日付クラスである必要があります。しかしそれのように、必要なもの(例えば "3年")に日付brekasを設定することは可能です。