2016-05-05 4 views
2

私は、離散変数xを持つ積み上げ領域チャートを作成しようとしています(会計年度、つまり暦年ではなく「2013/14」を表示したいからです)。 しかし、x軸の変数を因子に変換すると、最終的なチャートでは幾何がレンダリングされなくなります。ggplot2 factor x variable break geom_area

方法はありますか?

library(ggplot2) 

dat <- structure(list(year = c(13, 13, 14, 14, 15, 15), 
         group_lvl = structure(c(1L, 2L, 1L, 2L, 1L, 2L), 
              .Label = c("a", "b"), class = "factor"), 
         val = c(35, 65, 50, 50, 75, 25)), 
       .Names = c("year", "group_lvl", "val"), row.names = c(NA, -6L), 
       class = "data.frame") 
dat 
    year group_lvl val 
1 13   a 35 
2 13   b 65 
3 14   a 50 
4 14   b 50 
5 15   a 75 
6 15   b 25 

ggplot(dat, aes(x = year, y = val)) + 
    geom_area(aes(fill = group_lvl), position = "stack") 

enter image description here

dat$year <- factor(dat$year) 

ggplot(dat, aes(x = year, y = val)) + 
    geom_area(aes(fill = group_lvl), position = "stack") 

enter image description here

sessionInfo() 
R version 3.3.0 (2016-05-03) 
Platform: i386-w64-mingw32/i386 (32-bit) 
Running under: Windows 7 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252 
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C       
[5] LC_TIME=English_United Kingdom.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods base  

other attached packages: 
[1] ggplot2_2.1.0 

loaded via a namespace (and not attached): 
[1] labeling_0.3  colorspace_1.2-6 scales_0.4.0  plyr_1.8.3  tools_3.3.0  
[6] gtable_0.2.0  Rcpp_0.12.4  grid_3.3.0  digest_0.6.9  munsell_0.4.3 
+0

?小数点の表示が気に入らなければ、 'scale_x_continuous'を使って軸を制御するほうが良いでしょうか? – Gopala

+0

@Gopolaは、私にとってかなり合理的なようです。上記のように、私は財務年度としてx軸に時間を表示する必要があります。もう1つの例は、連続的なスケールがあまり意味を持たない第2四半期(2013q3、2013q4、2014q1)です。 いずれの場合でも、要素はラベル付き整数として格納されるため、問題なくx軸をプロットすることが領域図に期待されます。 –

+0

エリアグラフは連続変数の傾向を示します。したがって、あなたはそれらを連続的なスケールで表現できるタイプで必要とします。スケールを調整することは別の問題です。これは私が提案したものであり、以下の答えはそのアプローチを使用しています。 – Gopala

答えて

4

だけで、それ要因にする必要が休憩を追加しません。エリアチャートは、カテゴリデータの意味を持たない方法

ggplot(dat, aes(x = year, y = val)) + 
    geom_area(aes(fill = group_lvl), position = "stack") + 
    scale_x_continuous(breaks=c(13,14,15),labels=c("2013","2014","2015")) 

enter image description here

+0

完璧、ありがとうございます。 –