Rで解析:ベン図が手軽に描写できる!「VennDiagram」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

ベン図はデータを解釈する時に役に立ちます。Rでベン図を作成するには色々な方法があります。参考としてVennDiagramパッケージを紹介します。VennDiagramパッケージはデータをリストで扱うことができるので便利です。ただ、比較データが4以上になると、プロット時にデータが左側から並んでくれませんので工夫が必要です。紹介コードではデータが左から並ぶように調整しています。

スポンサーリンク

パッケージのインストール

install.packages("VennDiagram")

コマンド

#パッケージの読み込み
library("VennDiagram")

###データ例の準備#####
A <- sample(1:1000, 100, replace = FALSE)
B <- sample(200:800, 100, replace = FALSE)
C <- sample(300:500, 100, replace = FALSE)
D <- sample(400:600, 100, replace = FALSE)
Data <- c(A, B, C, D)

#4&#12388;&#12398;&#12487;&#12540;&#12479;&#12434;&#24819;&#23450;
Point <- sample(c("Point1", "Point2", "Point3", "Point4"),
                   length(Data), replace = TRUE)

#&#12487;&#12540;&#12479;&#12398;&#20316;&#25104;
ProtData <- data.frame(Data, Point)
########

###&#12505;&#12531;&#22259;&#12434;&#12503;&#12525;&#12483;&#12488;#####
#&#12521;&#12505;&#12523;&#12398;&#20316;&#25104;,&#38477;&#38918;&#12395;&#20006;&#12403;&#26367;&#12360;
Point <- sort(as.character(unique(ProtData[, 2]))) #&#28204;&#23450;&#21015;&#12434;&#25351;&#23450;
#&#28204;&#23450;&#12509;&#12452;&#12531;&#12488;&#12364;&#24038;&#12363;&#12425;&#20006;&#12406;&#12424;&#12358;&#12395;&#35519;&#25972;
ifelse(length(Point) > 3, Point <- c(Point[1], Point[length(Point)],
                                           c(Point[2:(length(Point) - 1)])), invisible())

#&#12505;&#12531;&#22259;&#12503;&#12525;&#12483;&#12488;&#12395;&#20351;&#12358;&#12522;&#12473;&#12488;&#20316;&#25104;
VennList <- vector("list", length(Point)) 
names(VennList)  <- Point #&#12521;&#12505;&#12523;&#12398;&#20184;&#19982;

for(n in seq(Point)){
  VennList[[n]] <- subset(ProtData[, 1], ProtData[,2] %in% Point[n]) #&#28204;&#23450;&#12509;&#12452;&#12531;&#12488;&#34892;&#12434;&#20837;&#21147;
}

###&#12505;&#12531;&#22259;&#12503;&#12525;&#12483;&#12488;&#12398;&#35373;&#23450;#####
#&#12505;&#12531;&#22259;&#12398;&#22615;&#12426;&#33394;&#12434;&#35373;&#23450;
FillCol <- c("dodgerblue", "goldenrod1", "darkorange1", "seagreen3", "orchid3")

#&#12503;&#12525;&#12483;&#12488;
grid.newpage()
grid.draw(venn.diagram(
  x = VennList,
  fill = FillCol[1:length(Point)],
  filename = NULL))

出力


少しでも、ウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました