R: plot 関数を使った散布図の作り方

UB3/informatics/r/r_plot

このページの最終更新日: 2023/08/02

  1. 概要: 散布図と R の plot 関数
  2. plot の基本的な使い方
  3. plot の散布図に直線・曲線を追加する
  4. シンボルをグループによって色分けする
  5. 文字をプロットする

関連ページ


広告

概要: 散布図と R の plot 関数

散布図 scatter plot とは、2 つの変数を X 軸と Y 軸にプロットした下のような図である。2 つの変数の関係を視覚的に理解することができるので、年齢と身長、店舗数と売り上げのような 2 つの連続変数データがある場合には、「どんな解析をするにせよ、まず最初に作ってみる」と言われるほど重要な図である。

treesデータセットの散布図

このページでは、R の plot 関数を使った散布図の作り方をまとめる。散布図は以下のような解析とも関係が深いので、必要に応じてリンク先を参照のこと。

ピアソンおよびスピアマンの相関検定は R の cor.test 関数 のページにまとめている。


plot の基本的な使い方

trees という 組み込みのデータセット を使って作成。31 本の木について、胴回り Girth、高さ Height、容積 Volume が収められている。

data(trees) #データの読み込み
plot(trees$Volume,trees$Height)


で散布図ができる。つまりベクター x および y を用いた plot (x,y) という形が基本である。

treesデータセットの散布図

plot に含められるパラメーターには、以下のようなものがある (1)。実際の使用例はこんな感じ。

plot(trees$Volume, trees$Height, main ="Tree Volume vs. Height", xlab="Volume, ylab="Height", col="red")


main

グラフタイトルを指定。main = "Scatter plot"

cex.main

タイトルのフォントサイズを指定。cex.main = 3

cex

シンボルのサイズを指定。デフォルトは 1 で、0.5, 2 のように指定する。数値はデフォルトサイズに対する倍率である。

cex.lab

x 軸および y 軸ラベルのフォントサイズを指定。

font.lab

x 軸および y 軸ラベルのフォントを指定。font.lab = 5 のように数字で指定する。

xlab, ylab

x 軸および y 軸のラベルを指定。xlab = "Percent increase"

xlim, ylim

x 軸および y 軸の範囲を指定。xlim = c(0,10) のようにベクターで指定する。

xaxs, yaxs

xaxs="i" と yaxs="i" を同時に指定すると X 軸と Y 軸がそれぞれの最小値で交わるようになる。

asp

x と y のアスペクト比を指定。グラフを正方形にするオプションかと思ったが違った。x 軸と y 軸の範囲が同じになる。asp = 1

なお、図を正方形にしたい場合は、plot の前に par(pty="s") を実行しておく。

type

シンボルや線などを指定。何もプロットしない n は意味がないように思えるが、文字をプロットする 場合にはこれを使う。

  • "p" - points
  • "l" - lines
  • "b" - both points and lines
  • "c" - empty points joined by lines
  • "o" - overplotted points and lines
  • "s" and "S" - stair steps
  • "h" - histogram-like vertical lines
  • "n" - does not produce any points or lines

col

シンボルの色を指定。col="blue" とすると、シンボルの線が青に変わる。塗りつぶしたいときは、pch を使ってシンボルを 19 に指定。

lty

線のタイプを指定。lty = 1 のように指定する。0 線なし、1 実線、2 破線、3 点線、4 一点鎖線、5 長い破線、6 長い一点鎖線。

pch

シンボルの種類を番号で指定。pch = "3" のように " " で指定すると、数字の 3 がプロットされる。pch = 3 のようにすると、以下の図からシンボルが選ばれる。この図は ggpubr というパッケージに含まれており、パッケージをインストール後に ggpubr::show_point_shapes() で出すことができる (参考)。

Rのシンボル

plot の散布図に直線・曲線を追加する

さまざまな方法がある。もっとも簡単なのは abline() 関数を使う方法である。

  • 変数 X および Y の散布図を plot(A, B) で作成。
  • ここに追加する直線・曲線の式は回帰分析で出す。lm 関数 のページを参照のこと。reg1 = lm(Y ~ X) として、lm の結果を reg1 に保存する。
  • abline(reg1) で、散布図に回帰曲線が追加される。

lines を使うか、curve を使って add="TRUE" とする方法もある。信頼区間を含める方法など、詳細は 散布図に回帰曲線を追加する を参照のこと。

シンボルをグループによって色分けする

いくつか方法がある。

par で重ね書きする

par 関数は、上書き指定をする関数である。以下のように、1 つ目の散布図のあとに par(new = T) で重ね書きを指定し、2 つ目の散布図を重ね書きできる。

plot(X1, Y1, col = "black", pch = 16)
par(new = T)
plot(X2, Y2, col = "red", pch = 16)


例では X1, Y1 を黒でプロットし、X2, Y2 を赤でプロットするように指定している。ただし、この方法には 罠がある ので注意。軸は X1, Y1 と X2, Y2 の散布図で別々に設定されるが、同じグラフ上にプロットされる。つまり、このままでは正確でない図が得られてしまう。

xlim, ylim で軸の範囲を揃える必要がある。さらに、このままでは軸ラベルが両方の散布図で書かれるので、重なって表示されてしまう。X2, Y2 の方を xlab = "", ylab = "" のように軸ラベル非表示の設定にする必要がある。

文字をプロットする

plot で type n を指定することで図を作り、そこに text で行名をプロットできる。


この場合、plot の input は一つのデータフレームでないといけない模様。plot(mtcars$mpg, mtcars$hp) で図を作ると、うまく表示されなかった。

treesデータセットの散布図
広告

References

  1. R Plot Function. Link: Last access 2020/05/30.
  2. ページ分割のため削除
  3. Rによる散布図の描画. Link: Last access 2020/06/13.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。