大志を抱く少年記

野心だけはいっちょ前な理系大学院生のブログです。

ベン図の上限

Rでベン図を描く。

VennDiagramというライブラリが使いやすくて視覚的にもわかりやすかった。 今回6つのデータセットをベン図にplotする必要があったので、6つのベン図ってなんだよと思いつつ、実行してみたら、普通にエラーが出た。VennDiagramの上限は5つまでらしい。
5つをPlotしたのが以下。とても分かりやすい。見やすい。

f:id:kimoppy126:20170901104132p:plain

コードは以下。

library(VennDiagram)

# グループを準備
a <- read.csv('Sample1.csv')
data1 <- as.vector(a$id)
b <- read.csv('Sample2.csv')
data2 <- as.vector(b$id)
c <- read.csv('Sample3.csv')
data3 <- as.vector(c$id)
d <- read.csv('Sample4.csv')
data4 <- as.vector(d$id)
e <- read.csv('Sample5.csv')
data5 <- as.vector(e$id)

# データをリスト型に変換
data <- list("Sample1" = data1, "Sample2" = data2, "Sample3" = data3, "Sample4" = data4, "Sample5" = data5)

# Plot
pdf("Benn.pdf")
venn.diagram(data, filename="Benn.jpg", fill=c(2,3,4,5,6), alpha=0.4, lty=1)
dev.off()



6つ以上plotしたいときは、venn というライブラリを使うとできる。7つまでできる。


f:id:kimoppy126:20170901105817p:plain

引用:r - Nice looking five sets Venn diagrams - Stack Overflow

コードは以下。データの準備は上と同様なので省略する。

library(venn)
data <- list("A" = data1, "B" = data2, "C" = data3, "D" = data4, "E" = data5, "F" = data6, "G" = data7)
pdf("Benn.pdf")
venn(data, ilab=TRUE, zcolor = "style")
dev.off()

重複データの抽出にはintersectを使う。

dup <- intersect(intersect(intersect(intersect(intersect(data1, data2), data3), data4), data5), data6)

出力はpdfにして
レポートに載せるときはスクショ撮ってるんだけど、もっといい方法ないんかな。。

参考 r - Nice looking five sets Venn diagrams - Stack Overflow