2016-08-31 3 views
1

私は初心者ですggplot2です。 date_minor_breaksを使用してx軸に四半期ごとの「ティック」を表示することはできません。date_minor_breaks in ggplot2

x<-c(seq(1:12)) 
time<-c("2010Q1","2010Q2","2010Q3","2010Q4","2011Q1","2011Q2", "2011Q3","2011Q4","2012Q1","2012Q2","2012Q3","2012Q4") 
z<-data.frame(type = x,time = time) 
z$time = as.yearqtr(z$time) 
z$time = as.Date(z$time) 
ggplot(data = z, aes(x=time,y=type)) + 
geom_point() + 
scale_x_date(date_labels = "%Y",date_minor_breaks = "3 months",name = "Year") + 
theme_tufte() + 
theme(legend.position = "none") 

が、私はSO Formatting dates with scale_x_date in ggplot2上とhttps://github.com/hadley/ggplot2/issues/542にこのトピックを調査し、このトピックに関する報告いくつかの問題があったことが判明:

は、ここに私のコードです。しかし、ggplot2の変更についての会話にはほとんど従っていませんでした。なぜなら、ggplot2を使い始めてからわずか6日だったからです。

は、ここで私が得たグラフ(それは任意のダニを持っていない)...

enter image description here

はこちらエクセルから生成された「目盛り」のサンプルのグラフのです。値を無視してください。なぜなら、このExcelチャートを作成することは、私が何を探しているかを示すことにあります。 "四半期ごとのダニ"。私はあなたの助けに感謝します。

enter image description here

答えて

4

あなたは3ヶ月ごとの主要なブレークを行う必要があり、その後、主要な(ラベル)とマイナーの錯覚を与えるために空白でパッドあなたのラベルは、(非標識)ダニがあります。別の例については、this answerを参照してください。

まず、四半期ごとに目盛りのブレークを手動で作成します。

次に、年ラベルを作成し、各ラベルの後に3つの空白を貼り付けます。

labels_year = format(seq(from = min(z$time), to = max(z$time), by = "1 year"), "%Y") 
labs = c(sapply(labels_year, function(x) { 
    c(x, rep("", 3)) 
    })) 

scale_x_datelabelsbreaks引数で休憩し、ラベルを使用しています。このためにdate_labelsdate_breaksを使用していないことに注意してください。

ggplot(data = z, aes(x=time,y=type)) + 
    geom_point() + 
    scale_x_date(labels = labs, breaks = breaks_qtr, name = "Year") + 
    theme_tufte() + 
    theme(legend.position = "none") 

enter image description here

0

また、あなたの(主要な)日付の区切りを定義する必要があります。

ggplot(data = z, aes(x=time, y=type)) + 
    geom_point() + 
    scale_x_date(date_breaks = "1 year", name = "Year", date_minor_breaks="3 months", 
       limits = c(as.Date(as.yearqtr("2009Q4")), 
          as.Date(as.yearqtr("2013Q2"))), 
       expand=c(0,0), date_labels = "%Y") + 
     theme(legend.position = "none") 

そして、いくつかの他の「派手な」ものを大目盛で小目盛りを合わせるために(私はより良い方法があると思いますこれを行うには、これは動作します)。

enter image description here

+0

どこティックはありますか?私はあなたが目にしているものがグリッドラインであり、ダニではないと信じています。上記の私の質問のExcelバージョンを参照してください - それはグリッド線がないが、ダニがあります... – watchtower

+0

あなたは3ヶ月としてdate_breaksを定義し、ラベルを手動で定義し、空白を残すよりも –