[R]2 axes plotting in R

R でY軸に左右ことなるスケールのグラフをプロットする方法

標準グラフライブラリ版

データフレームで A, B, C の3つの変数があったとき、 AxB, AxC をプロットしたいとする。
手順としては、次のようにする。

  1. AxB をプロット
  2. C の定義式を B に合わせるように変換
  3. 変換した C の定義域を利用して AxC をプロット
  4. Yの右軸にCの定義式でスケールをふる

手順(3) では B in [a, b] の場合
y = a + (b-a) * x, x in [0,1]
として
y in [a, b]
となるようにパラメータ変換する。

datasets.longley を利用すると、次のような感じになる。

plot(longley$Year, longley$Employed, type='l')
temp1 <- range(longley$Employed)
temp2 <- range(longley$GNP)
points(longley$Year,
temp1[1] + (temp1[2] - temp1[1]) * (longley$GNP - temp2[1]) / (temp2[2] - temp2[1]), type='l')
axis(side=4, at = temp1[1] + (temp1[2] - temp1[1]) * seq(0, 1, 0.2), labels = seq(temp2[1], temp2[2], length.out = 6))

ggplot2 版

ggplot2 でも上と同じような手順を踏めば 2軸グラフを作成できそう。

をみると、少なくともデフォルトでは異なるスケールのグラフをプロットする術は用意されていないと書かれている。

Advertisements
Tagged with: , , ,
Posted in R

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Archives
%d bloggers like this: