petitviolet blog

    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