blog.petitviolet.net

CSVのデータを使って散布図とヒストグラムを作る

2015-02-09

QiitaR

はじめに

R-Tips 見たら全部わかる

データの用意

ファイルの読み込み

> data <- read.csv('./plot_tfidf.csv', header=T, sep=",")
> data
      a      b
1 0.688 0.1930
2 0.701 0.7370
3 0.705 0.6860
4 0.732 0.0174
5 0.341 0.1390

read.csvの引数のheaderT[RUE]F[ALSE]のどちらを与えるかでヘッダーの扱いが変わる

> data <- read.csv('./text.csv', header=F, sep=",")
> data
     V1     V2
1     a      b
2 0.688  0.193
3 0.701  0.737
4 0.705  0.686
5 0.732 0.0174
6 0.341  0.139

要素へのアクセス

> data[1]
      a
1 0.688
2 0.701
3 0.705
4 0.732
5 0.341
> data$a
[1] 0.688 0.701 0.705 0.732 0.341

ヘッダーにTを与えていると$でアクセスできる

統計情報

簡単なものでsummaryが便利

> summary(data)
       a                b
 Min.   :0.3410   Min.   :0.0174
 1st Qu.:0.6880   1st Qu.:0.1390
 Median :0.7010   Median :0.1930
 Mean   :0.6334   Mean   :0.3545
 3rd Qu.:0.7050   3rd Qu.:0.6860
 Max.   :0.7320   Max.   :0.7370

それぞれ

  • Min: 最小値
  • 1st Qu.: 第一四分位数
  • Median: 中央値
  • Mean: 平均値
  • 3rd Qu.: 第三四分位数
  • Max.: 最大値

第一四分位数は下から 1/4 の順位の値を指している

abの値をそれぞれ散布図にプロットします

そのまま

そのまま表示
> plot(data)

kobito.1423488496.563257.png

縦横を入れ替える

縦横入れ替え
> plot(rev(data))

kobito.1423488460.599465.png

軸の取る値を指定する

縦軸/横軸の範囲を決める
> plot(data, xlim=c(0,1),ylim=c(0,1))

kobito.1423488592.392276.png

このようにc(min, max)で軸の取る値を決めることが出来ます

散布図の見た目を変える

見た目
> plot(data, xlim=c(0,1),ylim=c(0,1), pch=11, col="red", type="b", lty=5)

kobito.1423488866.406983.png

pchで点の表示方法 ltyで線の表示方法 
colで色 typeで plot の形式

補助線

補助線1
> plot(data, xlim=c(0,1),ylim=c(0,1),
+   panel.first=(
+     grid(4, 6, lty=2, col="blue")))

kobito.1423489649.665450.png

補助線はpanel.firstに指定する gridの第一引数が x 軸を、第二引数が y 軸を何分割にするかを指定できる

もう少し自由に線を引いたり、目盛りに線を合わせるためには、

補助線
> plot(data, xlim=c(0,1),ylim=c(0,1),
+   panel.first=(
+     grid(
+       abline(h=seq(0.0, 1.0, by=0.1), col="red", lty=3),
+       abline(v=seq(0.0, 1.0, by=0.1), col="blue", lty=4)
+     )
+   )
+ )

のようにする いまいち挙動はわかっていない…

kobito.1423489480.073943.png

ablineで線を引く事ができて、v=h=で x 軸、y 軸にそれぞれ垂直な線を指定できる seqは連続値を生成するっぽいので、このような図が表示される

ヒストグラム

データ
x <- rnorm(1000)

rnormで正規分布に従う乱数を生成できる

単純なヒストグラムは以下のように出来る

ヒストグラム1
> hist(x)

スクリーンショット 2015-02-09 23.02.33.png

ヒストグラム2
> hist(x, main="test x", xlab="this is x", ylab="freq", label=T)

スクリーンショット 2015-02-09 23.03.13.png

mainでタイトル、xlabylabで x 軸と y 軸のラベル、labelで個数を表示できる

ヒストグラム3
> hist(x, main="test x", xlab="this is x", ylab="freq", label=T, breaks=50)

スクリーンショット 2015-02-09 23.03.56.png

breaksでいくつに分割するかを指定できる

from: https://qiita.com/petitviolet/items/9d95c687f38251534f1e