読者です 読者をやめる 読者になる 読者になる

Mukku John Blog

取り組んでいること を つらつら と

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")

f:id:MukkuJohn:20160823214533p:plain


線が複数ある場合は、すべての線に影響するか、線ごとに異なるかが
指定箇所によって、変わってきます。*1

  • すべての線に影響する場合

エステティック属性に指定すると、すべての線に影響します

ggplot(tg, aes(x=dose, y=length, group=supp)) +
  geom_line(colour="lightblue", size=2)

f:id:MukkuJohn:20160823220409p:plain

  • 線ごとに影響する場合

マッピングする際に、エステティック属性を指定すると、線ごとに影響します。

ggplot(tg, aes(x=dose, y=length, colour=supp)) +
  geom_line(size=2)

f:id:MukkuJohn:20160823220425p:plain

点の体裁

点の体裁と、指定する引数の組み合わせはこちらになります。

  • 大きさ: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")

f:id:MukkuJohn:20160823220954p:plain


今まで、線と点を指定する順番を必ず固定にしていましたが
あえて、点を指定してから、線を指定してみます。

ggplot(BOD, aes(x=Time, y=demand)) + 
  geom_point(size=5, shape=22, colour="grey", fill="lightgreen") + 
  geom_line()

f:id:MukkuJohn:20160823221503p:plain
点の上に線が表示されましたね。このグラフですと、点を表示する意味がないので
線と点を表示する場合は、線 → 点 の順番は守るべきですね。

網掛け領域付きの折れ線グラフ

網掛け領域付きの折れ線グラフとは、どんなグラフなのかをご覧ください。
(x軸:年ごとに、y軸:太陽の黒点の数を図示しています。)
f:id:MukkuJohn:20160823222021p:plain

網掛け領域付きの折れ線グラフを作成するためには、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)

f:id:MukkuJohn:20160823223718p:plain
透過を指定しないと、目盛り線が見えなくなってしまうので、
できるだけ、透過は指定した方が良いですね。

さて、上のグラフですが、枠の色:colourを指定した事で
網掛けの領域が、一筆書きの様に囲まれています。

この囲んでいる線:輪郭線を消す場合には、colourの指定をせずに、
geom_line()で折れ線を追加します。

ggplot(sunspotyear, aes(x=Year, y=Sunspots)) + 
  geom_area(fill="pink",alpha=0.3) +
  geom_line()

f:id:MukkuJohn:20160823224221p:plain


次回は、積み上げ面グラフ、100%積み上げ面グラフを作成し、
折れ線の周りに網掛けをしてみたいと思います。

*1:利用しているデータセットは、この記事で記載しています。 mukkujohn.hatenablog.com