R

R studioでベン図を描く方法|サイズ自動調整【実行コード付き】

酒井 裕麻株式会社Bistro 代表取締役社長

R Studioを用いたベン図の作成

ベン図(Venn diagram)は、複数の集合がどのように重なり合っているか、関係性を視覚的に理解するための代表的な図です。データ分析の現場でも、セグメント間の重複や共通要素を直感的につかむためによく利用されます。
(※参考 : ベン図 – Wikipedia)

本記事では、R studioでベン図(Venn図)を描く方法を初心者にもわかりやすく解説します。
集合のサイズ比を正確に表現できるオイラー図にも対応した 「eulerr」パッケージ を使い、2つ・3つ以上の集合の描き方を、コード例と実際の図を交えて詳しく紹介します。

参考記事

RとR Studioのインストール方法 【誰でもできる画像解説付き】
R studioでCSVを読み込む方法【実行コード付き】

ベン図の作成

eulerrパッケージとは?

R (R studio)には複数のベン図描画パッケージがありますが、eulerrは特にオイラー図の作成に強いライブラリです。

通常のベン図(Venn diagram)はすべての重複領域がある前提で描かれますが、オイラー図(Euler diagram)は「実際に存在する重なりのみ」を反映して図示するため、より現実のデータに近い形で可視化できます。

eulerrパッケージは、集合の要素数に応じて円の大きさや重なりを自動調整してくれるため、データ分析業務での説得力ある可視化に最適です。

ベン図とオイラー図の違い:

  • ベン図:全ての領域(交差)が存在する前提で描画

  • オイラー図:実際に存在する領域のみを描画(重なりがなければ円は交差しない)

eulerrのインストール方法

以下のコードR studioコンソールに入力して実行してください。

install.packages("eulerr")

※ダブルクオーテーションでパッケージ名はくくってください。

※私の画面ではインストール済のため少し異なった表示になってしまっています。
インストール完了後、「The downloaded binary packages are in」というメッセージが表示されれば準備完了です。

R studioで2つの集合のベン図を描く方法(基本編)

まずは、2つの集合(AとB)のベン図を描いてみます。
ベン図の作成には以下のコードを使用します。

library("eulerr")
A = 34215
B = 52131
AB = 10242
fit = euler(c('A'=A,'B'=B,'A&B'=AB),shape = "ellipse")
name_A = "セグメントA"
name_B = "セグメントB"
plot(fit,
 fills = list(fill = c("#98FB98","#EE82EE"),
 alpha = 0.95),
 labels = list(col = "#333333", font = 1),
 quantities = TRUE,
 legend = list(labels = c(name_A, name_B))
)

上記のコードの実行結果で以下のベン図が出力されました。
Rで作成したベン図 eulerr使用例

今回の処理の中で使用する変数は以下のような構造になっていました。

  1. library(“eulerr”) : eulerrというパッケージを読み出す
  2. A = 34215 : A群のみに該当する部分の出現数を入力する
  3. B = 52131 : B群のみに該当する部分の出現数を入力する
  4. AB = 10242 : A群とB群の重複している部分の出現数を入力する
  5. fit = euler(c(‘A’=A,’B’=B,’A&B’=AB),shape = “ellipse”) : ベン図の出現数情報をデータ化
  6. name_A = “セグメントA” : A群の名称を命名
  7. name_B = “セグメントB” : B群の名称を命名
  8. fills = list(fill = c(“#98FB98″,”#EE82EE”), :  A群とB群の色を選択
  9. quantities = TRUE, : 数字を出力するか選択

R studioで3つの集合をベン図にする(応用編)

次は、3つの集合(A, B, C)を含むベン図です。

#ベン図
library(eulerr)
A = 300
B = 200
AB = 100
C = 500
AC = 50
BC = 30
ABC = 150
fit <- euler(c('A'=A,'B'=B,'C'=C, 'A&B'=AB,'A&C'=AC,'B&C'=BC,'A&B&C'=ABC) ,shape = "ellipse")
#表記の設定
name_A = "セグメントA"
name_B = "セグメントB"
name_C = "セグメントC"
#ベン図の描写
plot(fit,
fills = list(fill = c("#98FB98","#EE82EE","#00BFFF"),alpha = 0.95),
labels = list(col = "#333333", font = 1),quantities = TRUE, legend = list(labels = c(name_A, name_B, name_C)))

上記のコードの実行結果で以下のベン図が出力されました。
Rで作成したベン図 eulerr使用例2

よくあるエラーと対処法(Tips)

  • Q. 重なりがないはずなのに円が重なって見えるのですが?
     → shape = "ellipse" オプションを指定すると、正確に重なりを避けて描写されます。

  • Q. 図の精度が低く感じます
     → error_plot(fit) を使うと、フィットの誤差(適合度)を可視化できます。

他のRベン図パッケージとの比較

パッケージ名 特徴
eulerr 円サイズが要素数に比例、オイラー図にも対応
VennDiagram 出力の自由度が高いが、最大3集合が限界
ggVennDiagram ggplot2ベースで美しく、最大7集合まで対応可能

より見た目を重視する場合は ggVennDiagram、簡易的に済ませたい場合は VennDiagram も選択肢ですが、要素数に応じた正確な図を描きたいなら「eulerr」が最もおすすめです。

4つ以上の集合?その場合はUpSet図を!

集合が4つ以上になると、ベン図では視覚的に見づらくなることがあります。
その際には、UpSet図(UpSetRパッケージ)という代替手法も検討してみてください。

まとめ:R studioでのベン図作成はeulerrが最も手軽で正確!

  • eulerrは、R studioでのベン図・オイラー図作成に特化したパッケージ

  • 2〜3集合程度までの可視化に非常に適しており、図もシンプルで分かりやすい

  • 要素数に比例した正確なベン図が簡単に描けるため、データ分析やレポート資料作成にも最適

 R studioを使ってベン図を描くことで、分析結果を視覚的に説得力ある形で伝えることができます。ぜひ活用してみてください!

関連リンク・参考資料

RとR Studioのインストール方法

ggVennDiagram 公式 GitHub

VennDiagramパッケージ公式

CONTACT

データ活用のお悩み、
直接相談しませんか。

「何から始めればいいかわからない」段階でも大丈夫です。課題の整理からお手伝いします。