No.09783 二変量ボックスプロット図の描画法  【RY】 2009/04/30(Thu) 17:14

はじめまして。生物系の研究を行っているものです。
横軸に日付(1日目,2日目,4日目,8日目,16日目),縦軸に各日に観察したノンパラメトリックなデータを配置し,横軸をfactorではなく数値変数としてスケールを合わせてボックスプロットしたいと考えています。
青木先生のRのプログラム
http://aoki2.si.gunma-u.ac.jp/R/twodim-plot.html
では縦軸・横軸ともに数値変数のときは散布図をプロット,縦軸・横軸のいずれかがfactorの場合はボックスプロットを実行するプログラムがありますが,縦軸・横軸とも数値変数としてボックスプロットを実行する方法がわかりません。
どなたかご教授願えませんでしょうか?

No.09786 Re: 二変量ボックスプロット図の描画法  【青木繁伸】 2009/04/30(Thu) 21:58

添付するような図を描きたいということなんでしょうか。
boxplot は bxp を下請けにしています。boxplot の結果を取っておいて,bxp にそれなりの引数と一緒に渡してやると色々制御した図を描くことができるようですよ。
set.seed(123)  # 乱数の初期値(以下と同じ結果を得るために)
time <- sample(2^(0:4)) # 横軸変数
d <- data.frame(x=rep(time, each=500))
d$y <- sapply(d$x, function(m) rnorm(1, mean=m*0.2)) # 縦軸変数を適当に作る
ans <- boxplot(y~x, d) # boxplot 関数の結果を保存する(print(ans)により,どのような結果が返されるかわかる)
bxp(ans, at=2^(0:4), # どこにボックスプロットを描くか
xlim=c(0, 17), # 横軸の範囲
boxwex=0.6, # box の横幅(適切に)
xlab="測定時点", ylab="測定値") # ラベルが必要なら,指定する
画像をプロットすると拡大表示


No.09790 Re: 二変量ボックスプロット図の描画法  【takahashi】 2009/04/30(Thu) 23:25

boxplotは引数にatを受け入れてくれるので,
boxplot(y~x,d,at=2^(0:4),xlim=c(0,17))
でも大丈夫です。

No.09791 Re: 二変量ボックスプロット図の描画法  【RY】 2009/05/01(Fri) 13:25

青木先生,takahashiさん,ありがとうございます。この図を描きたくてRを始めたのですが独学ではどうにもならず途方にくれていました。助かりました。
追加で質問があるのですが,上記の図の横軸に等間隔で目盛りをつけることは可能でしょうか?

No.09792 Re: 二変量ボックスプロット図の描画法  【青木繁伸】 2009/05/01(Fri) 15:43

> 横軸に等間隔で目盛りをつける

boxplot(または,bxp)の引数で,xaxt="n" を指定して,目盛りと数値を書かない。
引き続き,axis(1) とすれば等間隔目盛りがつく。1ごとの目盛りをつけたいなら axis(1, at=0:17) とする。

No.09793 Re: 二変量ボックスプロット図の描画法  【RY】 2009/05/01(Fri) 16:25

青木先生,ありがとうございます。できました。
可能であれば上記のボックスプロットの中央値を直線で繋ぎたいのですが,いかがでしょうか?

No.09794 Re: 二変量ボックスプロット図の描画法  【青木繁伸】 2009/05/01(Fri) 17:23

boxplot の戻り値を ans に入れて,bxp を使った後,lines(2^(0:4), ans$stats[3,]) とすればよいでしょう。

No.09795 Re: 二変量ボックスプロット図の描画法  【RY】 2009/05/01(Fri) 19:42

boxの色を変更しようと思い,bxp関数にcol=""を与えましたが変更できませんでした。par(col="")を使用するとプロット領域の枠の色が変わるだけです。
どのようにすれば変更可能でしょうか?

No.09796 Re: 二変量ボックスプロット図の描画法  【青木繁伸】 2009/05/01(Fri) 21:13

> par(col="")を使用するとプロット領域の枠の色が変わるだけです

オンラインヘルプを見ていますか?bxp の par 引数を見てください。

boxlty, boxlwd, boxcol, boxfill:
box outline type, width, color, and fill color (which currently defaults to
col and will in future default to par("bg")).

例えば,par=list(boxcol="red", boxfill="blue")で,枠線を赤,枠内を青で描くようになりますよ。

No.09797 Re: 二変量ボックスプロット図の描画法  【RY】 2009/05/01(Fri) 22:07

青木先生,Takahashiさんのおかげで,思い描いていた通りの図を描くことができました。本当に助かりました。
Rってすごいですね。
大変お恥ずかしい話ですが,オンラインヘルプがあることを知りませんでした。確かにpar引数について記載されていますね。お忙しい中,初歩的な質問をしてしまい,本当に申し訳ございませんでした。以後,気をつけます。
今後ともご指導よろしくお願い申し上げます。

● 「統計学関連なんでもあり」の過去ログ--- 042 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る