ggplot2を使って、折れ線グラフを作る-2
R グラフィックス クックブック 8回目
ggplot2パッケージを利用して、折れ線グラフを作成していきます。
この記事では、下記を対象にします。
- 線と点の体裁
- 網掛け領域付きの折れ線グラフ
線と点の体裁
折れ線グラフの線と、データポイントの点の見た目に注視していきます。
線の体裁
線の体裁と、指定する引数の組み合わせはこちらになります。
- 線の種類(実線、破線、点線など):linetype
- 太さ(ミリ単位):size
- 色:colour
データは過去記事でも散々登場しているBODデータセットです。
R: Biochemical Oxygen Demand
ggplot(BOD, aes(x=Time, y=demand)) + geom_line(linetype="dashed", size = 1, colour="blue")
線が複数ある場合は、すべての線に影響するか、線ごとに異なるかが
指定箇所によって、変わってきます。*1
- すべての線に影響する場合
エステティック属性に指定すると、すべての線に影響します
ggplot(tg, aes(x=dose, y=length, group=supp)) + geom_line(colour="lightblue", size=2)
- 線ごとに影響する場合
マッピングする際に、エステティック属性を指定すると、線ごとに影響します。
ggplot(tg, aes(x=dose, y=length, colour=supp)) + geom_line(size=2)
点の体裁
点の体裁と、指定する引数の組み合わせはこちらになります。
- 大きさ:size
- 形:shape
- 枠の色:colour
- 塗りつぶしの色:fill(反映されるのはshape=22~25)
データは過去記事でも散々登場しているBODデータセットです。
R: Biochemical Oxygen Demand
ggplot(BOD, aes(x=Time, y=demand)) + geom_line() + geom_point(size=5, shape=22, colour="grey", fill="lightgreen")
今まで、線と点を指定する順番を必ず固定にしていましたが
あえて、点を指定してから、線を指定してみます。
ggplot(BOD, aes(x=Time, y=demand)) + geom_point(size=5, shape=22, colour="grey", fill="lightgreen") + geom_line()
点の上に線が表示されましたね。このグラフですと、点を表示する意味がないので
線と点を表示する場合は、線 → 点 の順番は守るべきですね。
網掛け領域付きの折れ線グラフ
網掛け領域付きの折れ線グラフとは、どんなグラフなのかをご覧ください。
(x軸:年ごとに、y軸:太陽の黒点の数を図示しています。)
網掛け領域付きの折れ線グラフを作成するためには、geom_area()を指定します。
ggplot(sunspotyear, aes(x=Year, y=Sunspots)) + geom_area()
グラフのデータは、sunspot.yearデータセットを利用しています。
R: Yearly Sunspot Data, 1700-1988
sunspotyear <- data.frame( Year = as.numeric(time(sunspot.year)), Sunspots = as.numeric(sunspot.year) )
体裁の指定は、こちらになります。
- 枠の色:colour
- 塗りつぶしの色:fill
- 透過:alpha(0:全透過~1:透過無しの小数点で指定します。)
ggplot(sunspotyear, aes(x=Year, y=Sunspots)) + geom_area(colour="black",fill="pink",alpha=0.3)
透過を指定しないと、目盛り線が見えなくなってしまうので、
できるだけ、透過は指定した方が良いですね。
さて、上のグラフですが、枠の色:colourを指定した事で
網掛けの領域が、一筆書きの様に囲まれています。
この囲んでいる線:輪郭線を消す場合には、colourの指定をせずに、
geom_line()で折れ線を追加します。
ggplot(sunspotyear, aes(x=Year, y=Sunspots)) + geom_area(fill="pink",alpha=0.3) + geom_line()
次回は、積み上げ面グラフ、100%積み上げ面グラフを作成し、
折れ線の周りに網掛けをしてみたいと思います。
*1:利用しているデータセットは、この記事で記載しています。 mukkujohn.hatenablog.com