R
グラフ
RStudio
Plot

概要

Rで、二軸のグラフ描画を行います。

内容は以下です。
・サンプルデータの作成
・通常の描画
・二軸で描画

サンプルデータの作成

まずは、サンプルデータの作成をします。
今回は、30日分の売り上げと、購入者数、購入日がある3列のデータを作成します。

##まずはサンプルデータ作成

#購入金額データ
purchase <- rnorm(n=30, mean=400000, sd=50000) %>%
  as.integer() 

#購入者数データ
usr_num <- rnorm(n=30, mean=200, sd=50) %>%
  as.integer() 

#上で作成したデータをデータフレームにし、購入日列の追加
data <-data.frame(purchase, usr_num) %>% 
  mutate(date = seq(1:length(purchase))) 

以下のような、purchase(購入金額合計)、usr_num(購入者数)、date(購入日)の
3列からなるサンプルデータができました。

スクリーンショット 2017-06-05 14.16.18.png

通常の描画

通常、購入金額合計と、購入者数のような、単位の大きく異なる二数を
一つのグラフにまとめようとすると、以下のグラフのように、
単位の小さい購入者数は、増減の波がないように見えてしまいます。

スクリーンショット 2017-06-05 14.13.27.png

二軸で描画してみよう

1.まずはグラフパラメータの設定から

通常、一軸のメモリを置くだけのスペースしかないので、グラフパラメータを変更して、
2軸目を置くとこが出来る余白を作ります。

##グラフパラメータを変更する
#パラメータを元に戻せるよう、デフォルト値を保持しておく
default_mai <-par()

#グラフパラメータの設定
mai <- par()$mai

#余白サイズの設定(上下と左右の幅を揃える)
mai[4] <- mai[1] 

#指定した余白サイズの適用
par(mai = mai)

2.一つ目のグラフを描こう

これはいつも通りに。

##1つ目のグラフの描画
plot(
  data$usr_num,
  type = "l", #"l"で折れ線グラフの指定
  ylab = "usr_num", #y軸の表示
  col = "blue" #線の色の指定
  ) 

先ほど、余白を作っておいたので、通常よりも右側があいています
スクリーンショット 2017-06-08 18.21.28.png

3.二つ目のグラフを描こう

ここからが本番です!


##2つ目のグラフの表示
par(new = T) #現在のplotに上描きの設定

plot(
  data$purchase, #plotしたいものを指定
  type = "l", 
  axes = FALSE, #axes=Fの指定をしないと既存の軸の上に軸が乗ってしまう
  ylab = "", #空にしておかないと既存の表示の上に重なってしまう 
  col="red" 
  )

#2軸目を表示
axis(4) #どこにメモリを置くか(1なら下,2なら左,3なら上,4なら右)

#2軸目のラベル設定
mtext("purchase", #2軸目のラベル名
      side = 4, #どこにラベルを置くか(1なら下,2なら左,3なら上,4なら右)
      line = 2 #グラフの枠からの距離
      )

スクリーンショット 2017-06-08 18.23.13.png

完成 \ (@^0^@) /
購入者数と金額の増減の波は、ある程度関係があるように見えます。
描くグラフによって、新しい発見があることが多いです。

4.最後に

最初に変更した、グラフパラメータを元に戻しておきましょう。

#グラフパラメータの余白をデフォルト値に戻す
par(mai = default_mai$mai)