R を使ったベン図の作り方

UB3/informatics/r/r_venn_diagram

このページの最終更新日: 2024/02/03

  1. 概要: ベン図とは
  2. VennDiagram パッケージを使う方法
    • パッケージの準備
    • データの準備
  3. ベン図に関係するデータを出力する方法
  4. 「ベン図の重なり」に対する統計検定

広告

概要: ベン図とは

ベン図 Venn diagram は、複数の集合の関係を視覚的に示した次のような図である。

ベン図
Feldmeyer et al. BMC Evol Biol 17, 237, 2017.

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

パイチャート入りのベン図
Bertevello et al. Int J Mol Sci 19, 3261, 2018.

このページでは、R を使ってベン図を作る方法を説明する。

VennDiagram パッケージを使う方法

パッケージの準備

ググって最初に見つかったのが Ref. 1 の VennDiagram パッケージを使う方法だった。以下のようにインストールして読み込む。このあたりがよくわからない場合は、R のパッケージ を参照のこと。

install.packages("VennDiagram")
library("VennDiagram")

Loading required package: grid
Loading required package: futile.logger

という表示が出て、パッケージが読み込まれた。これでパッケージの準備は完了。

データの準備

このパッケージに含まれる venn.diagram 関数を使うのだが、この関数の入力は、複数の文字列を含むリストである。

実例として、以下のデータでベン図を書いてみる。香川県民と大阪県民を比較すると、きつねうどんとラーメンのみが重複している。この 2 つだけが重なったベン図ができるはずである。

Rでベン図を作成する1

Kagawa=c("うどん","かけうどん","きつねうどん","ぶっかけうどん","カレー","ラーメン")
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)

Rで作成したベン図

filename

必須。filename=a.png のように " " をつけ忘れると、Error in venn.diagram(list, filename = a.png) : object 'a.png' not found というエラーになる。

fill

alpha

透過率

cex

数字ラベルのフォントサイズを指定。

cat.cex

カテゴリー名のフォントサイズを指定。

ベン図に関係するデータを出力する方法

ベン図は複数のリストを比較し、その重複の程度を視覚化する手段である。比較するリストから、共通のデータを抽出したり、片方に特有のデータを抽出したりする方法もここに示しておく (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

  1. R package"VennDiagram"でベン図を書く. Link: Last access 2020/01/22.
  2. R 2つのリストを比較する関数 (intersect、setdiff) の紹介 Link: Last access 2020/01/25.
  3. Rによるベン図の描画. Link: Last access 2022/07/26.

コメント欄

サーバー移転のため、コメント欄は一時閉鎖中です。サイドバーから「管理人への質問」へどうぞ。