##背景##
学会の発表資料作成でRでVenn図を書かなければならなかったのですが、調べても自分がやりたい「csvファイルのデータを読み込んでVenn図を書く」という方法について、ドンピシャの情報がなかったので、備忘録として投稿します。
##csvファイルのデータの準備##
まずは実験や観察などの結果をまとめたcsvファイルを作成します。
この時に注意しなければならないのが、Venn図では各条件(目的変数)における説明変数の頻度を視覚した図であるため、列方向に目的変数が、行方向には各説明変数の "名称" が情報として必要となります。
私は実験結果をExcelの表でまとめてピボットテーブルで結果をまとめる際に、説明変数を1列目入れて、各説明変数のところにチェックや数字、属性の記号などを使っていたのですが、そのままで読み込もうとしていても、まともなVenn図ができない状況でした。
Venn図に読み込むためには、以下の操作でExcel内でデータを成形して、csv形式に変えました。
- Excelのフィルターなどで目的変数で空欄を除外する
- 1列目の説明変数の2行目以降で表示されている説明変数をコピーして、目的変数にペーストする
- 上記の1と2を説明変数で繰り返す
- 全ての説明変数で作業が終わったら、フィルターを解除して1列目(説明変数)を削除する
この作業が終わったら、csv形式でファイルを保存します。
保存先はRのWorking directly(Rのスクリプトなどがあるところ)に保存します。
##Rでスクリプト作成##
以下の点に注意してスクリプトを作成します。
###Venn Diagramパッケージのインストールとライブラリ起動###
install.packages("VennDiagram")
library(VennDiagram)
###csvファイルの読み込み###
- csvファイルをtable形式で読み込む
- 説明変数の行を削除する
- 空欄をNAに変換する
fname <- "Venn_example.csv"
venn_list <- read.table(fname, skip=1, sep=",", na.strings=c(''))
###説明変数を格納する変数を作成###
以下のように1列目、2列目、・・・の情報を格納する変数を作成する
(Venn diagram関数では5つまでの制限があるようです)
AA <- venn_list[,1]
BB <- venn_list[,2]
CC <- venn_list[,3]
###変数内のNAの値を除去する###
以下の操作でNAの値を除去しないと、NAという情報がVenn図に掲載されてしまい、数が合わなくなります。
AAA <- AA[!is.na(AA)]
BBB <- AA[!is.na(BB)]
CCC <- AA[!is.na(CC)]
###リストを作成###
Venn diagram関数ではリスト形式しか受け付けないようです。
結構ここでハマってしまいましたので、注意してください。
この際、Venn図に表す文字列をイコールの左側(リストのタイトル)に入れるのですが、欲張って長い文字数を入れるとエラーでVenn図が描かれませんので注意が必要です。
VennExample <- list(A = AAA, B = BBB, C = CCC)
###いよいよVenn図作成###
いよいよVenn図作成です。ちゃんと変数の設定などを行えば、綺麗な図を描いてくれます
venn.diagram(VennExample, filename = "venn_test.png",fill=c(1,2,3), alpha=0.4, lty=2)
ここで、Filenameで出力先を設定することが必要になります。
試してみたところ、png形式の他にtiff形式やjpeg形式でも出力が可能です。
オプションのalphaは透過度を、fillは塗りつぶす色のオプションになります。
以下の参考のリンク先にvenn.diagram関数のオプションが紹介されています。
https://data-science.gr.jp/implementation/ida_r_venn_diagram.html