複数座標軸

R の axis 関数を利用することで、複数の縦軸を付けたりすることができる。

プロットの左右に y 軸を二つ付ける方法

図の左右に y 軸を二つ付ける方法。手順として、まず axes = FALSE と指定して、座標軸のないグラフを描く。次に axis 関数を利用して、座標軸を追加する。

x <- 1:10
y <- c(2, 1, 3, 2, 4, 8, 14, 20, 22, 29)
z <- c(2, 1, 3, 5, 7, 7, 6, 5, 4, 6)

# 二つ目の y 軸を描くために余白を調整
par(oma = c(0, 0, 0, 2))

# x と y のプロット
plot(x, y, xlim = c(0, 10), ylim = c(0, 30), 
     xlab = "x", ylab = "y", type = "l", col = "orange", lwd = 2,  # いろいろなオプション
     axes = FALSE)                                                 # 座標軸を描かないようにする
axis(1)   # 下の横軸を表示
axis(2)   # 左の縦軸を表示

# 次のグラフを重ね合わせるための作業
par(new = TRUE)

# x と z のプロット
plot(x, z, xlim = c(0, 10), ylim = c(0, 10),
     xlab = "", ylab = "", type = "l", col = "cyan", lwd = 2,
     axes = FALSE)
mtext("z",side = 4, line = 3)  # 右の縦軸のラベル
axis(4)                        # 右の縦軸を表示

# プロット全体に枠線で囲む
box()

# 凡例
legend("topleft", legend = c("y", "z"), col = c("orange", "cyan"), lty = 1)
プロットの右側にy軸を表示させる

プロットの左側に y 軸を二つ付ける方法

グラフの左側に y 軸を 2 つ付ける方法。グラフの左側に座標軸を描くための余白を oma オプションで指定する。また、plot 関数を利用してグラフを描くとき、axes = FALSE と指定して軸を描かないようにする。最後に axis 関数を利用して座標軸を付け加える。(余白調整の詳細

x <- 1:10
y <- c(2, 1, 3, 2, 4, 8, 14, 20, 22, 29)
z <- c(2, 1, 3, 5, 7, 7, 6, 5, 4, 6)

# 二つ目の y 軸を描くための余白を調整
par(mar = c(5, 8, 3, 2))

# x と y のプロット
plot(x, y, xlim = c(0, 10), ylim = c(0, 30), 
     xlab = "", ylab = "", type = "l", col = "orange", lwd = 2,  # いろいろなオプション
     axes = FALSE)                                               # 座標軸を描かないようにする
axis(1)                                             # 下の横軸を表示
mtext(1, text = "x", line = 3)                      # 下の縦軸 y のラベル
axis(2, ylim = c(0, 30), line = 1, col = "orange")  # 左の縦軸 y を表示
mtext(2, text = "y", line = 3)                      # 左の縦軸 y のラベル

# 次のグラフを重ね合わせるための作業
par(new = TRUE)

# xとzのプロット
plot(x, z, xlim = c(0, 10), ylim = c(0, 10),
     xlab = "", ylab = "", type = "l", col = "cyan", lwd = 2,
     axes = FALSE)
axis(2, ylim = c(0, 10), line = 5, col = "cyan")    # 左の縦軸 z を表示
mtext("z",side = 2, line = 7)                       # 左の縦軸 z のラベル
プロットの左側にy軸を表示させる

axis 関数について

axis 関数はグラフの座標軸を描く関数である。axis(1)axis(2) のように数字を与えて利用する。代入できる数値は 1、2、3、4 である。それぞれ下側の軸、左側の軸、上側の軸、右側の軸を意味する。

axis(1, xlim = c(0, 10))
axis(2, ylim = c(0, 100))

また、axisline オプションを描くと、軸の位置を調整することができる。この場合、mar オプションを利用して、余白を十分に取る必要がある。

par(mar = c(5, 8, 2, 2))
axis(1, line = 4)    # 下側の横軸を本来の位置から 4 文字分だけ下に描く
axis(2, line = 6)    # 左側の縦軸を本来の位置から 6 文字分だけ下に描く

軸に色を付ける場合は col 引数を利用する。

axis(1, col = "orange")
axis(2, col = "blue")