論理の流刑地

流罪に遭い戸惑う世捨人の雑記

積み上げ折れ線グラフをggplot2で描く

Motivation

ggplot2()は割と綺麗なグラフが描けるので重宝しているが、
いかんせんそこまで高頻度で使うわけでないので、忘れてしまう。

備忘として、積み上げ折れ線グラフの作りかたを書き記しておく。

参考URL

URL1
ill-identified.hatenablog.com
URL2
mukkujohn.hatenablog.com

上のブログだとgeom_line()とgeom_ribbon()を用いた方法が、下のブログではgeom_area()を用いた方法が紹介されている

やってみる

データ準備

データに関しては、参考URL1で用いられているSeatbeltsデータを使う

data(Seatbelts) 
df <- data.frame(Seatbelts, year=rep(1969:1984,each=12) ) 

df_byYear <-  dplyr::summarize( dplyr::group_by( df , year), drivers= sum(drivers) , front=sum(front) , rear = sum(rear) ) #年ごとに集計
df.melt <- reshape2::melt( dplyr::select( df_byYear, year , drivers , front, rear)  , id.vars = "year" ) #縦に溶かす

geom_area()で描画

見た目が思い通りであれば、別にどの関数を使用しても構わない派である。
ゆえに、参考URL2で紹介されているgeom_area()を用いた方が簡易な気がするため、こっちにする。

まず普通にやる。

tsumiage1 <- ggplot( data = df.melt) + geom_area( mapping= aes( x = year , y = value , fill = variable) )
plot(tsumiage1)

f:id:ronri_rukeichi:20181214144444p:plain

多少カスタマイズする

quartzFonts(HiraMaru=quartzFont(rep("HiraMaruProN-W4",4)))  #Font指定
tsumiage2 <- ggplot( data = df.melt) 
+ geom_area( mapping= aes( x = year , y = value , fill = variable) , color = "black", alpha = 0.7) 
+ scale_fill_brewer(palette="Oranges",name="死亡内訳" , breaks = c("drivers" , "front","rear") ,labels = c("運転者" , "前部座席", "後部座席" ) )
+theme_bw(base_family = "HiraMaru") +xlab("年度") + ylab("死亡者数")

f:id:ronri_rukeichi:20181214144559p:plain

カスタマイズ上参考になるURLはこちら


Enjoy!