[R] データフレームを可視化するtabplotパッケージについて

  • ????????????????????

データの列数が多くなってくる (高次元になってくる) とデータの全体像が捉えにくくなる.R-bloggers を読んでたら,Rのデータフレームを可視化するためのパッケージ tabplot なんてのがあるらしい,ということで試してみた.コレを使うとデータを効率的に可視化できるので,よくわからないデータをとりあえず可視化してみて,それからあれこれ考えてみると捗るかもしれない.

CRAN から tabplot パッケージをインストールすればすぐに使える (類似の名前で tableplot なんてのがあるので注意).

とりあえず使ってみる

iris と (ggplot2パッケージに含まれている) diamonds データセットに対してやってみる.iris の結果については上に示した通り.diamonds データに対しては次のようになる.

tableplot のデフォルトではデータフレームの第1列がソートされる (別の列を指定する方法は下記参照).それに対応してすべての変数値がプロットされる.factor に対してはその値でのシェアを表し,数値型では平均値がプロットされる.上の図を見れば

  • カラットと価格に相関がある,
  • カラット数が上昇するとクラリティのランクは下がりがち (ダイヤが大きくなればどうしてもどこかに不純物が入ってくることを反映してる?)

ということが一目でわかる.

使い方は以下のようにものすごく簡単.

library(ggplot2)   # for diamonds dataset
library(tabplot)

data(iris)
tableplot(iris)

data(diamonds)
tableplot(diamonds)

ちなみにふつーの plot を使うと以下のような感じなので,tabplot によって視認性がかなり改善されていることが分かる.二変量の分布を見たい場合はこちらのほうが適切かもしれないが.

plot(iris)
plot(diamonds)

ソート

tableplot のデフォルトでは第1列がソートされるが,それを変更するには sortCol 引数を指定する.以下は iris の Sepal.Width でソートした例.

tableplot(iris,sortCol="Sepal.Width")

フィルタリング

tableplot する対象のデータをフィルタリングすることも可能.フィルター条件は filter 引数に「文字列で」与える (それが内部的に eval される).

# Species が virginica のものだけを対象にする
tableplot(iris,filter="Species=='virginica'")

# Sepal.Width が 3.2 以上のものだけを対象にする
tableplot(iris,filter="Sepal.Width > 3.2")

分割を細分化する

nBins を指定すると縦軸方向の分割を細かくすることができる.デフォルトは 100 分割 (1%区切り).例えば 0.2 % 区切りで集計するには以下のように nBins=500 を指定する.

# 0.2 % 区切りで集計
tableplot(diamonds,nBins=500)

はてなブックマーク - [R] データフレームを可視化するtabplotパッケージについて
Pocket