・お題:要素の重なりを視覚的に表現したグラフに、ベン図というのがある。Rで描いてみたい。
・いろいろ調べてみると、ggplotベースのggVennDiagramというパッケージが便利っぽい。ベン図を描く他のパッケージとの比較も論文で紹介されていた。今回は、ggVennDiagramを触ってみたい。
・先述の論文は以下。
・ggVennDiagramのチュートリアルは以下。
・関連ライブラリを呼び出す。(インストールは割愛)
> 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つ以上のグループのベン図ってこういう風に描くんですね。。
・今回ggVennDiagramを用いることで、簡単にベン図を描くことができた。デフォルトのグループの組み合わせが決まっているので仕方ない感があるのだけれど、適当に作ったデータでゼロが出る場合、それでも図的に重なっていることになる。
・先に挙げた論文で、venneulerというパッケージだと、重なりの数に応じてベン図を描けるっぽかったので、今度はそっちも試してみたい。
いったんおわり