【R】Rで簡単にグラフを作りたい!:Wideデータから複数ヒストグラムを一度に作る(ggplot)

2023-01-15

EZRを使うだけでも十分グラフの作成は楽になっていますが、もっと楽をしたいと考える怠け者です。

正直、JMPのグラフ作成が便利すぎるのでRでも同じような機能が欲しいと思っていますが、残念ながら今のところ見つかっていないので試しに作ってみる事にしました。

もちろん最初から同じ機能は難しいので、ひとまずは選択した変数(連続変数)から複数のヒストグラムを一度に作るまでです。

その前にJMPのグラフ作成

JMP

以前は買い切り版で何とか個人でも購入できる値段でしたが、今はサブスクリプションになってとても払える金額では無くなりました。

マウスだけで簡単に作図や解析をしてくれるので便利だったのですが…。

作図したい変数を選択

完成

グラフだけでなくSummaryも一緒に表示されるので、データの傾向把握が非常にはかどります。

同じような機能がRに実装できれば、と思っています。

WideデータとLongデータ

WideデータとLongデータについては以下のリンクをご覧ください。

データベースではLongデータ形式で保存されていても、まとめる際に人間が把握しやすいようにWideデータで保存する事はよくあります。

特に、臨床データの場合はITに不慣れな人間がデータをまとめる事も多いので、ほぼ全てWideデータ形式で渡されます。

1項目(変数)ごとのグラフ作成ならWideデータでも可能ですが、ggplotを使ってまとめて作図が目的なので、今回は作図の時にLongデータに変更しようと思います。

手順

簡単な手順は以下のようになります。

  1. Wideデータで読み込んだデータセットから作図したい変数を選択
  2. 選択された変数だけでLongデータに変換した作図用データセットを作成
  3. 作図用データセットを使って変数ごとにggplotでヒストグラムを作成

Wideデータで読み込んだデータセットから作図したい変数を選択

変数の選択も簡単にしたいので、tk_select.listを使ってGUIで変数を選択します。

選択された変数だけでLongデータに変換した作図用データセットを作成

「1.Wideデータで読み込んだデータセットから作図したい変数を選択」で選ばれた変数名を使って、dplyr::selectとtidyr::gatherを使って作図用のデータセットを作成します。

(selectcolは選択した変数名を格納しています)

tempdataset <- dplyr::select(Dataset, c(selectcol))
dataset.gathered <- tidyr::gather(tempdataset, key = test, value = d)

作図用データセットを使って変数ごとにggplotでヒストグラムを作成

ヒストグラム以外のグラフを作りたい場合は、geom_histogramを変更してください。

ggplot(dataset.gathered, aes(d)) +
  geom_histogram() +
  facet_wrap(~test, scales ="free")

一通りのコード

エラー処理はしていません。

パッケージは必要に応じてインストールしてください。

library(ggplot2)
library(tidyr)
library(tcltk)

Dataset <- iris

colname <- colnames(Dataset)
selectcol <- tk_select.list(colname, preselect = NULL, multiple = TRUE, title = NULL)

tempdataset <- dplyr::select(Dataset, c(selectcol))
dataset.gathered <- tidyr::gather(tempdataset, key = test, value = d)

ggplot(dataset.gathered, aes(d)) +
  geom_histogram() +
  facet_wrap(~test, scales ="free")

実行結果

変数選択

ヒストグラムを作成したい連続変数を選択します。

作成されたヒストグラム

おまけ

ファイルを選択してデータを読み込む場合は、ダイアログボックスを使うと便利です。

まとめ

まだ、一度にヒストグラムが作れるようになっただけですが、頑張ればJMPのような機能も実装できそうな手ごたえはありました。

今後、勉強しながら必要な機能を追加したいと考えています。

Library (Package)

Posted by ううら