目次(まとめ)

◾️ Rでベン図を描いて集合の関係を可視化する

◾️ 3つ以上の集合についても同じようにベン図を描くことが可能

◾️ 関連記事


こんにちは、みっちゃんです。

今回の記事では、小学校や中学校で習った「ベン図」の書き方を紹介します。

ベン図はどのような場面で使っていたでしょうか?

例えば、30人の生徒のうち、"電車を使って通学している生徒" と "バスを使って通学している生徒" を調べたときに、"電車とバスを使って通学している生徒" を図示するときに使っていました。

しかし、"電車" か "バス" といった2択で単純の場合には、上のように簡単にベン図をかけますが、3択、4択と増えていくと、手書きでベン図を書くのは大変です。

そこで、今回の記事では、Rという言語をつかって、ベン図を描く方法を解説します。

Rでベン図を描いて集合の関係を可視化する

説明のため、電車を使って通学している生徒、バスを使って通学している生徒を以下のように表現します。

# 電車を使って通学している生徒(train):20人
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, AA, BB, CC, DD, EE

# バスを使って通学している生徒(bus):15人
P, Q, R, S, T, U, V, W, X, Y, AA, BB, CC, DD, EE

つまり、Aさん、Bさん・・・・EEさんは、電車を使って通学している生徒、Pさん、Qさん・・・・EEさんは、バスを使って通学している生徒です(みて分かる通り、AAさん・・・・EEさんは、電車とバスを使って通学している生徒です)。

このデータを使って、Rでベン図を描きます。

まず、RをMacOSのターミナル上で開きます(以前の記事をご参照ください)。

$ R -q

以前の記事でヒートマップをRで描く方法を紹介しましたが、そのときと同様に「gplots」というパッケージを使って描いてみます。

> install.packages("gplots")
> library(gplots)

ベン図を描きたいデータを以下のように設定します。

> train <- c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "AA", "BB", "CC", "DD", "EE")

> bus <- c("P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "AA", "BB", "CC", "DD", "EE")

ベン図を描くためには、以下のように実行します。

> data = list(TRAIN=train, BUS=bus)
> venn(data)

listの中身に、"TRAIN" と "BUS" と書くことで、それぞれの丸の名前を指定することができます。

また、このベン図の数値の情報は、以下のようにすれば出力することができます(ここで、"1" と "0" は、"通学に使っている"、"通学に使っていない" と考えてください)。

> (venn(data))
   num train bus
00   0     0   0    #電車もバスも使っていない生徒
01  10     0   1    #バスを使っている生徒
10  15     1   0    #電車を使っている生徒
11   5     1   1    #電車とバスを使っている生徒

attr(,"intersections")
attr(,"intersections")$bus
 [1] "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y"

attr(,"intersections")$train
 [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O"

attr(,"intersections")$`train:bus`
[1] "AA" "BB" "CC" "DD" "EE"

attr(,"class")
[1] "venn"

3つ以上の集合についても同じようにベン図を描くことが可能

ベン図は、3つ以上の集合に対しても、同じように描くことができます。

ここでは、"電車" と "バス" に加えて、"自転車" で通学している生徒を考えてみたいと思います。

# 自転車を使って通学している生徒(bike):8人
A, D, E, P, Z, CC, DD, EE

Rでは、以下のように設定します。

> bike <- c("A", "D", "E", "P", "Z", "CC", "DD", "EE")

ベン図を描くためには、以下のように実行します。

> data = list(TRAIN=train, BUS=bus, BIKE=bike)
> venn(data)

こうして可視化してみると、"電車" と "バス" と "自転車" をつかって通学している生徒が3人いることが簡単にわかります。

関連記事