いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】ベン図を描いてみたい①

・お題:要素の重なりを視覚的に表現したグラフに、ベン図というのがある。Rで描いてみたい。

 

・いろいろ調べてみると、ggplotベースのggVennDiagramというパッケージが便利っぽい。ベン図を描く他のパッケージとの比較も論文で紹介されていた。今回は、ggVennDiagramを触ってみたい。

・先述の論文は以下。

https://www.researchgate.net/publication/354415262_ggVennDiagram_An_Intuitive_Easy-to-Use_and_Highly_Customizable_R_Package_to_Generate_Venn_Diagram

・ggVennDiagramのチュートリアルは以下。

gaospecial.github.io

・関連ライブラリを呼び出す。(インストールは割愛)

> library(tidyverse)
> library(ggVennDiagram)

・適当にデータを作る。

> data1 <- c("A", "B", "C", "D", "E", "F")
> data2 <- c("A", "B", "E")
> data3 <- c("B", "C", "D", "E")
> data4 <- c("A", "C", "F", "G")

・とりあえずデフォルトで描く。

> p12 <- ggVennDiagram(list(data1, data2))
> p12

・非常に簡単にベン図を作成することができた。要素の数で色がつくようになっているらしい。デフォルトのグループ名はSetになっているが、本来はリスト作成時の名前が適用される。

> p12 <- ggVennDiagram(list(test1 = data1, test2 = data2))
> p12

・リスト作成時の名前を適用したくない場合は、category.names で表示名を指定することもできる。また、デフォルトでは個数と割合両方が表示されるが、個数のみ表示することもできる。

> p12 <- ggVennDiagram(list(data1, data2),
+                      category.names = c("TEST1","TEST2"),
+                      label = "count")
> p12

・もちろん、3つ以上のグループの重なりを表現することもできるし、色調を指定することもできる。

> p123 + scale_fill_distiller(palette = "Reds",
+                             direction = 1)

・その他のオプションを少しつけると、例えば以下のようになったりする
> p1234 <- ggVennDiagram(list(data1, data2, data3, data4),
+                        category.names = c("TEST1","TEST2","TEST3", "TEST4"),
+                        label = "count")
> p1234 +
+   scale_fill_distiller(palette = "Blues", 
+                              direction = 1) +
+   labs(title = "Four sets Venn Diagram",
+        subtitle = "generated by `ggVennDiagram`",
+        caption = Sys.Date())

・以下の公式サイトを覗いてみると、他にも様々な変更を加えることができるみたい。5つ以上のグループのベン図ってこういう風に描くんですね。。

gaospecial.github.io

・今回ggVennDiagramを用いることで、簡単にベン図を描くことができた。デフォルトのグループの組み合わせが決まっているので仕方ない感があるのだけれど、適当に作ったデータでゼロが出る場合、それでも図的に重なっていることになる。

・先に挙げた論文で、venneulerというパッケージだと、重なりの数に応じてベン図を描けるっぽかったので、今度はそっちも試してみたい。

 

いったんおわり