トップ «前の日記(2020年02月21日) 最新 次の日記(2020年02月26日)» 編集

役に立たない情報


2020年02月25日 [R基礎] 散布図の作り方とちょっとだけサンプリング

_ [R基礎] 散布図の作り方

データの分散をただ散布図で出したい!そんな時あるよね.うんうん卒論てカサ増しが大事だしね. でね,適当な実験データの散布図を書こうとするのもRって便利なんだよ.

例えば成人男子の体重と身長,成人女子の体重と身長をプロットしたい場合,CSVから読み込みでもいいんだけど,適当にデータフレームに突っ込むじゃん?

m_h: 男子身長, m_w: 男子体重

f_h: 女子身長, f_w: 女子体重

とするじゃん?

plot(0,0,type="n",xlim = c(min(m_w,f_w), max(m_w,f_w)), ylim = c(min(m_h,f_h), max(m_h,f_h)),xlab="Weight (kg)",ylab="Height (cm)")
points(m_w,m_h,pch=16,col="#0000ff",cex=2)
points(f_w,f_h,pch=16,col="#ff0000",cex=2)

とこんな感じで書ける.

_ [R基礎] これだと不親切なのでちょっとランダムにサンプリングを作る方法も書いておく

とりあえず一番簡単な無作為な(無意味な)行列を作るにはsample関数を使うと良い.

m_h <- sample(155:175, 40, replace=TRUE)
m_w <- sample(55:90, 40, replace=TRUE)
f_h <- sample(145:170, 40, replace=TRUE)
f_w <- sample(40:65, 40, replace=TRUE)

という風にm_hだと,155から175の範囲の40の要素を無作為に抽出してデータフレームにしてくれる.これを上のplotと組み合わせて,適当な散布図を書くことができるよ.

あとさらっとpngでファイル出力もしちゃうスクリプトをサンプルで載せておくね!じゃあね!

#!/usr/local/bin/Rscript

m_h <- sample(155:175, 40, replace=TRUE)
m_w <- sample(55:90, 40, replace=TRUE)
f_h <- sample(145:170, 40, replace=TRUE)
f_w <- sample(40:65, 40, replace=TRUE)

png("scatter_plot.png", width=512, height=512)

plot(0,0,type="n",xlim = c(min(m_w,f_w), max(m_w,f_w)), ylim = c(min(m_h,f_h), max(m_h,f_h)),xlab="Weight (kg)",ylab="Height (cm)")
points(m_w,m_h,pch=16,col="#0000ff",cex=2)
points(f_w,f_h,pch=16,col="#ff0000",cex=2)

dev.off()

散布図