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

UB3/informatics/r/r_plot

このページの最終更新日: 2021/07/10

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

広告

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

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



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

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


plot の基本的な使い方

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

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


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


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

xlab, ylab

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

xlim, ylim

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

cex.lab

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

font.lab

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

xaxs, yaxs

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

asp

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

type

シンボルや線などを指定。

  • "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 に指定。

cex

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

pch

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


広告

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

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 したあとに maptools ライブラリーの pointLabel 関数でラベルを追加できる。

複数のグラフを並べる

plot 関数に限らないかもしれないが、とりあえずここに書いておく。

layout と split.screen を使う方法がある (2)。個人的には、出力先を指定できる split.screen の方が好みである。

split.screen(c(1,2)) # これで1行2列を指定
screen(1) # それぞれのスクリーンを指定して、グラフを作る
  plot(x1, y1)
screen(2)
  plot(x1, y1)
close.screen(1) # もとの1スクリーンに戻す


このほか、R による棒グラフの描画 も役に立つページ。


広告

References

  1. R Plot Function. Link: Last access 2020/05/30.
  2. R 使い方 複数のグラフを並べる グラフの描き方. Link: Last access 2020/05/30.
  3. Rによる散布図の描画. Link: Last access 2020/06/13.

コメント欄

各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。

禁止ワード: http, the, м (ロシア語のフォントです)


このページにコメント

Name:


Comment:



これまでに投稿されたコメント

Date Name Comment