グラフィックス参考実例集:散布図行列
の編集
http://www.okadajp.org/RWiki/?%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E5%8F%82%E8%80%83%E5%AE%9F%E4%BE%8B%E9%9B%86%EF%BC%9A%E6%95%A3%E5%B8%83%E5%9B%B3%E8%A1%8C%E5%88%97
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
COLOR(red){SIZE(20){グラフィックス参考実例集:散布図行列 pairs}} ([[グラフィックス参考実例集]]に戻る。[[Rのグラフィックスパラメータ]]を参照する。)~ ~ 関数pairsは対散布図を描きます。この関数は行列を引数としてとり、各列同士の組合せ全てについて図を描きます。軸の目盛などは見やすいとは言えませんが、各変量間の関係を俯瞰するには便利です。引数panelに個々の図を描く関数を指定することができます。この引数の値には、x、y座標と作図パラメータを引数とする任意の関数が指定できますが、座標系の設定はpairsが行なうので、この引数には重ね描きを行なう低水準作図関数を指定します。 なお、散布図に平滑化した曲線を描き加える関数panel.smoothが、panel引数に指定可能なものとして用意されています。 また、散布図行列は複数の散布図を行列状に並べたもので、対角線部分には色々なものを置くことができます。 ~ ~ 注意:パネル関数を独自に定義する際は、グラフィックスオプションを含めることができるように、必ずオプションの任意追加引数を意味する COLOR(red){...} を含めておくこと。例5を参照。 ~ 注意:パネル関数は左下専用の lower.panel, 右上専用の upper.panel 関数を指定できる。 単に panel だけを指定すると左下、右上双方に使われる。 #contents ~ ** 例1 pairs1 <- function () { oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 on.exit(par(oldpar)) # (関数がエラー中断しても)パラメータ復帰 data(iris) # 組み込みデータ iris 読み込み png("pairs1.png") # png デバイスを開 # 散布図行列を描く(種類毎に色を変える) pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)]) dev.off() # デバイスを閉じる } #ref(pairs1.png,left) ** 例2 pairs2 <- function () { oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 png("pairs2.png") # png デバイスを開 data(USJudgeRatings) # 組み込みデータ USJudgeRatings 読み込み pairs(USJudgeRatings) # 散布図行列を描 dev.off() # デバイスを閉じる } #ref(pairs2.png,left) ** 例3 pairs3 <- function () { oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 on.exit(par(oldpar)) # (関数がエラー中断しても)パラメータ復帰 panel.hist <- function(x, ...) # ヒストグラムを描くための関数を定義 { usr <- par("usr") # 現在のユーザー領域座標情報を得る on.exit(par(usr)) # 関数終了時に usr パラメータ復帰 par(usr = c(usr[1:2], 0, 1.5) ) # ユーザー領域座標情報を変更 h <- hist(x, plot = FALSE) breaks <- h$breaks; nB <- length(breaks) y <- h$counts; y <- y/max(y) rect(breaks[-nB], 0, breaks[-1], y, col="cyan", ...) } png("pairs3.png") # png デバイスを開く # 散布図行列を描 # panel=panel.smooth で各散布図に平滑化曲線を関数 panel.smooth で上描 # diag.panel=panel.hist で対角線部分にヒストグラムを描 pairs(USJudgeRatings[1:5], panel=panel.smooth, cex = 1.5, pch = 24, bg="light blue", diag.panel=panel.hist, cex.labels = 2, font.labels=2) dev.off() # postscript デバイスを閉じる } #ref(pairs3.png,left) ** 例4 pairs4 <- function () { ## 上三角部分パネルに相関係数の絶対値を書く ## 数値は相関値の大小に比例させる oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 on.exit(par(oldpar)) # (関数がエラー中断しても)パラメータ復帰 panel.cor <- function(x, y, digits=2, prefix="", cex.cor) { usr <- par("usr") # 現在のユーザー領域座標情報を得る on.exit(par(usr)) # 関数終了時に usr パラメータ復帰 par(usr = c(0, 1, 0, 1)) # ユーザー領域変更 r <- abs(cor(x, y)) txt <- format(c(r, 0.123456789), digits=digits)[1] txt <- paste(prefix, txt, sep="") if(missing(cex.cor)) cex <- 0.8/strwidth(txt) text(0.5, 0.5, txt, cex = cex * r) } png("pairs4.png") # png デバイスを開く # 散布図行列を描く # panel=panel.smooth で各散布図に平滑化曲線を関数 panel.smooth で上描き # upper.panel=panel.cor で相関値を書く pairs(USJudgeRatings, lower.panel=panel.smooth, upper.panel=panel.cor) dev.off() # デバイスを閉じる } #ref(pairs4.png,left) ** 例5 (パネルの座標範囲を共通にする、2004.10.08) パネル関数を独自に定義し、座標範囲を共通にし、対角線を引く。 グラフィックスパラメータ xlim=c(5, 10), ylim=c(5, 10) をパネル関数に引き渡すためには特殊引数 COLOR(red){...} を加えておくことがコツ。 data(USJudgeRatings) pairs(USJudgeRatings[1:3], panel=function(x,y, ...) {points(x, y, pch="."); abline(0,1,col=2)}, xlim=c(5, 10), ylim=c(5, 10) ) #ref(pairspanel.png,left) ** 投稿ユーティリティー panel.lsfit パネルに回帰直線を加える Tips 集の関数の項 [[pairs用 回帰直線つきpanel]] 参照
タイムスタンプを変更しない
COLOR(red){SIZE(20){グラフィックス参考実例集:散布図行列 pairs}} ([[グラフィックス参考実例集]]に戻る。[[Rのグラフィックスパラメータ]]を参照する。)~ ~ 関数pairsは対散布図を描きます。この関数は行列を引数としてとり、各列同士の組合せ全てについて図を描きます。軸の目盛などは見やすいとは言えませんが、各変量間の関係を俯瞰するには便利です。引数panelに個々の図を描く関数を指定することができます。この引数の値には、x、y座標と作図パラメータを引数とする任意の関数が指定できますが、座標系の設定はpairsが行なうので、この引数には重ね描きを行なう低水準作図関数を指定します。 なお、散布図に平滑化した曲線を描き加える関数panel.smoothが、panel引数に指定可能なものとして用意されています。 また、散布図行列は複数の散布図を行列状に並べたもので、対角線部分には色々なものを置くことができます。 ~ ~ 注意:パネル関数を独自に定義する際は、グラフィックスオプションを含めることができるように、必ずオプションの任意追加引数を意味する COLOR(red){...} を含めておくこと。例5を参照。 ~ 注意:パネル関数は左下専用の lower.panel, 右上専用の upper.panel 関数を指定できる。 単に panel だけを指定すると左下、右上双方に使われる。 #contents ~ ** 例1 pairs1 <- function () { oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 on.exit(par(oldpar)) # (関数がエラー中断しても)パラメータ復帰 data(iris) # 組み込みデータ iris 読み込み png("pairs1.png") # png デバイスを開 # 散布図行列を描く(種類毎に色を変える) pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species", pch = 21, bg = c("red", "green3", "blue")[unclass(iris$Species)]) dev.off() # デバイスを閉じる } #ref(pairs1.png,left) ** 例2 pairs2 <- function () { oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 png("pairs2.png") # png デバイスを開 data(USJudgeRatings) # 組み込みデータ USJudgeRatings 読み込み pairs(USJudgeRatings) # 散布図行列を描 dev.off() # デバイスを閉じる } #ref(pairs2.png,left) ** 例3 pairs3 <- function () { oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 on.exit(par(oldpar)) # (関数がエラー中断しても)パラメータ復帰 panel.hist <- function(x, ...) # ヒストグラムを描くための関数を定義 { usr <- par("usr") # 現在のユーザー領域座標情報を得る on.exit(par(usr)) # 関数終了時に usr パラメータ復帰 par(usr = c(usr[1:2], 0, 1.5) ) # ユーザー領域座標情報を変更 h <- hist(x, plot = FALSE) breaks <- h$breaks; nB <- length(breaks) y <- h$counts; y <- y/max(y) rect(breaks[-nB], 0, breaks[-1], y, col="cyan", ...) } png("pairs3.png") # png デバイスを開く # 散布図行列を描 # panel=panel.smooth で各散布図に平滑化曲線を関数 panel.smooth で上描 # diag.panel=panel.hist で対角線部分にヒストグラムを描 pairs(USJudgeRatings[1:5], panel=panel.smooth, cex = 1.5, pch = 24, bg="light blue", diag.panel=panel.hist, cex.labels = 2, font.labels=2) dev.off() # postscript デバイスを閉じる } #ref(pairs3.png,left) ** 例4 pairs4 <- function () { ## 上三角部分パネルに相関係数の絶対値を書く ## 数値は相関値の大小に比例させる oldpar <- par(no.readonly = TRUE) # 現在のグラフィックスパラメータ退避 on.exit(par(oldpar)) # (関数がエラー中断しても)パラメータ復帰 panel.cor <- function(x, y, digits=2, prefix="", cex.cor) { usr <- par("usr") # 現在のユーザー領域座標情報を得る on.exit(par(usr)) # 関数終了時に usr パラメータ復帰 par(usr = c(0, 1, 0, 1)) # ユーザー領域変更 r <- abs(cor(x, y)) txt <- format(c(r, 0.123456789), digits=digits)[1] txt <- paste(prefix, txt, sep="") if(missing(cex.cor)) cex <- 0.8/strwidth(txt) text(0.5, 0.5, txt, cex = cex * r) } png("pairs4.png") # png デバイスを開く # 散布図行列を描く # panel=panel.smooth で各散布図に平滑化曲線を関数 panel.smooth で上描き # upper.panel=panel.cor で相関値を書く pairs(USJudgeRatings, lower.panel=panel.smooth, upper.panel=panel.cor) dev.off() # デバイスを閉じる } #ref(pairs4.png,left) ** 例5 (パネルの座標範囲を共通にする、2004.10.08) パネル関数を独自に定義し、座標範囲を共通にし、対角線を引く。 グラフィックスパラメータ xlim=c(5, 10), ylim=c(5, 10) をパネル関数に引き渡すためには特殊引数 COLOR(red){...} を加えておくことがコツ。 data(USJudgeRatings) pairs(USJudgeRatings[1:3], panel=function(x,y, ...) {points(x, y, pch="."); abline(0,1,col=2)}, xlim=c(5, 10), ylim=c(5, 10) ) #ref(pairspanel.png,left) ** 投稿ユーティリティー panel.lsfit パネルに回帰直線を加える Tips 集の関数の項 [[pairs用 回帰直線つきpanel]] 参照
テキスト整形のルールを表示する
添付ファイル:
pairspanel.png
3549件
[
詳細
]
pairs4.png
4217件
[
詳細
]
pairs2.png
1537件
[
詳細
]
pairs3.png
1609件
[
詳細
]
pairs1.png
1835件
[
詳細
]