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


# はじめに

[R-Tips](http://cse.naro.affrc.go.jp/takezawa/r-tips/r.html)
見たら全部わかる

# データの用意

### ファイルの読み込み

```R
> 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`の引数の`header`に`T[RUE]`か`F[ALSE]`のどちらを与えるかでヘッダーの扱いが変わる

```R
> 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
```

### 要素へのアクセス

```R
> 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`が便利

```R
> 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の順位の値を指している

# 図

`a`と`b`の値をそれぞれ散布図にプロットします

## そのまま

```R:そのまま表示
> plot(data)
```

![kobito.1423488496.563257.png](https://qiita-image-store.s3.amazonaws.com/0/280/e4da87f1-6a55-c196-a13c-633e498fd0fa.png "kobito.1423488496.563257.png")


## 縦横を入れ替える

```R:縦横入れ替え
> plot(rev(data))
```
![kobito.1423488460.599465.png](https://qiita-image-store.s3.amazonaws.com/0/280/ed53ec97-47c4-ef19-3632-e95cf133f2e9.png "kobito.1423488460.599465.png")


## 軸の取る値を指定する

```R:縦軸/横軸の範囲を決める
> plot(data, xlim=c(0,1),ylim=c(0,1))
```
![kobito.1423488592.392276.png](https://qiita-image-store.s3.amazonaws.com/0/280/b8f0644d-1edf-2626-f8b1-fdebe313b904.png "kobito.1423488592.392276.png")

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

## 散布図の見た目を変える

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

![kobito.1423488866.406983.png](https://qiita-image-store.s3.amazonaws.com/0/280/694c318e-8964-09cd-8d55-f61015476b26.png "kobito.1423488866.406983.png")

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

## 補助線

```R:補助線1
> plot(data, xlim=c(0,1),ylim=c(0,1),
+   panel.first=(
+     grid(4, 6, lty=2, col="blue")))
```
![kobito.1423489649.665450.png](https://qiita-image-store.s3.amazonaws.com/0/280/5c4a95f3-d824-204a-4061-c484979d0089.png "kobito.1423489649.665450.png")

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

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

```R:補助線
> 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](https://qiita-image-store.s3.amazonaws.com/0/280/54fdc7b3-ec5d-1371-985b-4d0a16337d05.png "kobito.1423489480.073943.png")

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

## ヒストグラム

```R:データ
x <- rnorm(1000)
```

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

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

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

![スクリーンショット 2015-02-09 23.02.33.png](https://qiita-image-store.s3.amazonaws.com/0/280/64751a79-3088-41c4-c686-d01a7382bb5b.png "スクリーンショット 2015-02-09 23.02.33.png")

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

![スクリーンショット 2015-02-09 23.03.13.png](https://qiita-image-store.s3.amazonaws.com/0/280/46b64646-c80b-38a0-8441-78a9406f0b71.png "スクリーンショット 2015-02-09 23.03.13.png")

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

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

![スクリーンショット 2015-02-09 23.03.56.png](https://qiita-image-store.s3.amazonaws.com/0/280/5bd5a733-1abb-749c-d702-36722aa47c4d.png "スクリーンショット 2015-02-09 23.03.56.png")

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