No.14635 度数分布図をそろえる  【大学院生です】 2011/05/13(Fri) 16:22

お世話になっております。
x<-c(80,80,80,90,90,90,90,90,90)
y<-c(30,30,40,40,40,50,50,50,50)
というデータがあったとします。
これを視覚的に表現し比較するために,それぞれのグラフの縦軸,横軸を同じにして,また図全体が同じ大きさにしたいと考えています。
縦軸(人数)が0〜10(目盛り間隔は1人),横軸(得点)が0〜100(目盛り間隔は10(点))で二つを並べてRで表現するためにはどうすればよろしいでしょうか?
よろしくお願いいたします。

No.14636 Re: 度数分布図をそろえる  【青木繁伸】 2011/05/13(Fri) 16:47

2 つのグラフを並べるには,layout 関数を使います。
それぞれのグラフの軸の範囲(目盛り)は,hist 関数の xlim, ylim 引数で両方のグラフで同じになるように指定します。階級幅は,hist の beak 引数を同じにすればよいでしょう。
目盛り間隔はあまり凝らない方が良いでしょうけど,どうしてもというなら axis 関数を使います。
それだけです。
ggplot2 や lattice を使う方がよいと考える人もいると思いますが,まずは基本的な方法を試してみるのがよいでしょう。

No.14642 Re: 度数分布図をそろえる  【大学院生】 2011/05/14(Sat) 22:38

青木先生
お返事が遅くなりまして申し訳ございません。
histを使用して以下のようなものを作成し描画できました。
hist(df,xlim=c(0,100),ylim=c(0,10))
た だ階級幅をbeakでどのように設定すべきか,いろいろと検索してみたのですが,ヒットしませんでした。またlayout関数で2つのグラフをどのように 並べるかについては,青木先生のご著書のp.91を参考にがんばってみたのですが,理解し,描画するためには時間がかかりそうです。beakをどのように 使用すべきなのかご指導いただけませんか?
よろしくお願いいたします。

No.14643 Re: 度数分布図をそろえる  【青木繁伸】 2011/05/15(Sun) 09:32

hist の引き数名は breaks でしたけど,それは ? hist とオンラインヘルプを見ればすぐに分かることでは?

No.14644 Re: 度数分布図をそろえる  【大学院生です】 2011/05/15(Sun) 10:27

青木先生
breaksで調べてできるようになりました。
layout関数はがんばってみます。
ありがとうございました。

No.14646 Re: 度数分布図をそろえる  【青木繁伸】 2011/05/15(Sun) 20:55

以下のようなものが参考になる?
draw.hist <- function(x, min, max, by)
{
hist(x, breaks=seq(min, max, by=by), xlim=c(min, max), xaxt="n")
axis(1, seq(min, max, by=by))
}
set.seed(123456)
a <- rnorm(1000)
b <- rnorm(1000, mean=0.5, sd=1.3)
layout(matrix(1:2, 2))
draw.hist(a, -4, 6, 0.5)
draw.hist(b, -4, 6, 0.5)
layout(1)


No.14648 Re: 度数分布図をそろえる  【大学院生】 2011/05/17(Tue) 21:55

青木先生
お礼の書き込みをさせていただきまして,その後掲示板のチェックしておりませんでしたので,ご呈示いただきました内容についてお礼が大変遅くなってしまいました。ありがとうございました。
手元のデータでも同じように出力されました。
本当にありがとうございました。

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