R を使ったベン図の作り方
UB3/informatics/r/r_venn_diagram
このページの最終更新日: 2021/01/17- 概要: ベン図とは
- VennDiagram ライブラリを使う方法
- パッケージの準備
- データの準備
- ベン図に関係するデータを出力する方法
- 「ベン図の重なり」に対する統計検定
広告
概要: ベン図とは
ベン図 Venn diagram は、複数の集合の関係を視覚的に示した次のような図である。

上記の図はかなり基本的な 3 群のベン図だが、図の中に情報が入っているパターンも多い。下の図には pie chart が入っている。

広告
R の VennDiagram パッケージでベン図を描く方法
パッケージの準備
ググって最初に見つかったのが Ref. 1 の VennDiagram パッケージを使う方法だった。デフォルトではこのパッケージは入っていないようなので、まずインストールする必要がある。このあたりがよくわからない場合は、R のパッケージ を参照のこと。
CRAN のサーバーを指定し、パッケージが無事にインストールされたら、以下のようにして読み込む。
Loading required package: grid
Loading required package: futile.logger
という表示が出て、パッケージが読み込まれた。これでパッケージの準備は完了。
データの準備
Ref. 1 では、以下のような形でデータを準備している。
これは
Excel で鈴木、加藤のようなアイテムが縦に並んでいるとき、コピペで R に読み込んでベン図にしたいが、やってみるとデータ形式が list - dataframe になってしまい、文字列ベクターへの変換がうまくいかない。
仕方ないのでテキストエディット上で改行を「","」に置換し、一番最初と最後のみ手動で " を追加することでデータをベクターに格納する方法をまとめておく。いずれ良い方法を探したい。
以下のデータでベン図を書いてみる。香川県民と大阪県民を比較すると、きつねうどんとラーメンのみが重複している。この 2 つだけが重なったベン図ができるはずである。

Excel のデータを、まずテキストエディットにコピペすると、このようになる。改行をダブルクオーテション + コンマ + ダブルクオーテションに置換する準備をしている。

置換するとこのようになるので、一番最初の「うどん」の前と、最後の「ラーメン」のあとに " を追加すれば、コピペで R のベクターにデータを入れられるようになる。

ここまでくれば、あとは Ref. 1 に従って R を操作。確認のコマンドを入れつつ、次のようにする。
> Osaka=c("きつねうどん","お好み焼き","たこ焼き","ラーメン","焼肉","ステーキ")
> typeof(Kagawa)
[1] "character"
> typeof(Osaka)
[1] "character"
> list=list(K=Kagawa, O=Osaka)
> venn.diagram(list, filename="food.png", fill=c (2,3), alpha=0.4)
fill は色を、alpha は透過率を表すと思われる。以下のような図が作業ディレクトリに出力される。
- filename=a.png のように " " をつけ忘れると、Error in venn.diagram(list, filename = a.png) : object 'a.png' not found というエラーになる。

ベン図に関係するデータを出力する方法
ベン図は複数のリストを比較し、その重複の程度を視覚化する手段である。比較するリストから、共通のデータを抽出したり、片方に特有のデータを抽出したりする方法もここに示しておく (2)。
A, B という 2 つのオブジェクトがあるとき、intersect および setdiff を使い、以下のようにする。
- 共通のものを抽出: intersect(A,B)
- A のみに含まれるものを抽出: setdiff(A,B)
- B のみに含まれるものを抽出: setdiff(B,A)
「ベン図の重なり」に対する統計検定
phyper(q, m, n, k, lower.tail = FALSE, log.p = FALSE)広告
References
- R package"VennDiagram"でベン図を書く. Link: Last access 2020/01/22.
- R 2つのリストを比較する関数 (intersect、setdiff) の紹介 Link: Last access 2020/01/25.
コメント欄
各ページのコメント欄を復活させました。スパム対策のため、以下の禁止ワードが含まれるコメントは表示されないように設定しています。レイアウトなどは引き続き改善していきます。「管理人への質問」「フォーラム」へのバナーも引き続きご利用下さい。
禁止ワード: http, the, м (ロシア語のフォントです)
|
|
このページにコメント
これまでに投稿されたコメント
Date | Name | Comment |
---|