[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軸グラフを作成できそう。

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

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
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 1 week ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 3 weeks ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 3 weeks ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 6 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 9 months ago
%d bloggers like this: