Symfoware

Symfowareについての考察blog

R言語 ユーザー数を指定間隔の保持ポイントで積み上げる(ヒストグラム)

例えば、各ユーザーがポイントを持っているとします。
何ポイントぐらい持っている人が多いのか、100ポイント区切りで棒グラフにしたい。


こちらを参考にさせて頂いています。
バイオスタティスティクス - ヒストグラム



サンプルデータ1



こんなデータがあるとします。


user_id point
1 50
2 150
3 160
4 200




0-9ポイント:1名
100-199ポイント:2名
200-299ポイント:1名
ですね。

これを積み上げたグラフにして、どのポイントの範囲の
ユーザーが多いか可視化したい。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. # ファイルからデータを読み込み
  3. x <- read.table("data.txt", header=T)
  4. # point列でヒストグラムをプロット
  5. hist(x$point)
  6. graphics.off()




こんなグラフが出来ました。

502_01.png



横幅の調整



hist関数にbreaksを与えればOK。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. # ファイルからデータを読み込み
  3. x <- read.table("data.txt", header=T)
  4. # point列でヒストグラムをプロット
  5. hist(x$point, breaks = c(0, 99, 199, 299))
  6. graphics.off()



502_02.png




y軸のプロット



上記で良いと思ったのですが、breaksにベクトルを指定すると、
縦軸が確率になります。

freq = Tを指定して、頻度にしようとすると


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. # ファイルからデータを読み込み
  3. x <- read.table("data.txt", header=T)
  4. # point列でヒストグラムをプロット
  5. hist(x$point, breaks = c(0, 99, 199, 299), freq = T)
  6. graphics.off()




こんなエラーになりました。


Warning message:
In plot.histogram(r, freq = freq1, col = col, border = border, angle = angle, :
the AREAS in the plot are wrong -- rather use 'freq = FALSE'




breaksにseqを指定してみます。
-1から100区切りで300まで。


  1. png("image.png", width = 500, height = 300, pointsize = 12, bg = "white")
  2. # ファイルからデータを読み込み
  3. x <- read.table("data.txt", header=T)
  4. # point列でヒストグラムをプロット
  5. hist(x$point, breaks = seq(-1, 300, 100), freq = T)
  6. graphics.off()




だいぶ狙っているグラフになってきました。

502_03.png




タイトルなどの指定



main:グラフタイトル
xlab:X軸タイトル
ylab:Y軸タイトル


  1. png('image.png', width = 500, height = 300, pointsize = 12, bg = 'white')
  2. # ファイルからデータを読み込み
  3. x <- read.table('data.txt', header=T)
  4. # point列でヒストグラムをプロット
  5. hist(x$point, breaks = seq(-1, 300, 100), freq = T,
  6.     main='ユーザー保持ポイント分布',
  7.     xlab='ポイント分布',
  8.     ylab='ユーザー数')
  9. graphics.off()



502_04.png





サンプルデータ2



こんなデータがあるとします。


user_id point sex
1 50 F
2 150 F
3 160 M
4 200 M




男性(sex=M)のデータのみのプロットがほしい。


  1. png('image.png', width = 500, height = 300, pointsize = 12, bg = 'white')
  2. # ファイルからデータを読み込み
  3. x <- read.table('data.txt', header=T)
  4. # point列でヒストグラムをプロット
  5. hist(x[x$sex == 'M',]$point, breaks = seq(-1, 300, 100), freq = T,
  6.     main='ユーザー保持ポイント分布',
  7.     xlab='ポイント分布',
  8.     ylab='ユーザー数')
  9. graphics.off()



502_05.png


R言語 掲載記事のまとめ
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/11/05(水) 23:37:53|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<R言語 グラフに縦線、横線、一次関数の線を描画する(abline) | ホーム | FreeBSD 10 R言語のグラフプロットで日本語が表示できない>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1537-4702a70d
この記事にトラックバックする(FC2ブログユーザー)