ベン図

venn

gplots パッケージ中の venn 関数を利用してベン図を描く例。

library(gplots)

# サンプルデータを準備
dna.bind <- c("3U5Z", "3PT6", "1MHT", "1SSO", "1H1J", "1RIY")
xra      <- c("3U5Z", "3PT6", "1MHT", "1T2K")
nmr      <- c("1SSO", "1H1J", "2KI2")
# データをリスト型に変換
data <- list(DNAB = dna.bind, XRAY = xra, SNMR = nmr)


# ベン図(左下の図)
venn(data)


# ベン図(右下の図)
par(mar = c(0, 0, 2, 0))    # タイトルを付けるために空白を調製
plot.new()
venn(data)
mtext("Venn title", side = 3, line = 1)
venn関数によるベン図 venn関数によるベン図

venn 関数で描いたベン図を png フォーマットで保存すると、画像が崩れることがある。背景を透明にすることで、回避される。

png("venn.png", 300, 300, bg = "transparent")
venn(data)
dev.off()

venneuler

venneuler 関数でベン図を描く例。venneuler を利用するには、グループの重なり合う部分を予めに計算する必要がある。

library(venneuler)

# グループを準備
A <- c("3U5Z", "3PT6", "1MHT", "1SSO", "1H1J", "1RIY")
B <- c("3U5Z", "3PT6", "1MHT", "1T2K")
C <- c("1SSO", "1H1J", "2KI2")

# 各グループの要素数と重なり合う部分を計算
n.A <- length(A)
n.B <- length(B)
n.C <- length(C)
n.AB <- sum(!is.na(match(A, B)))
n.BC <- sum(!is.na(match(B, C)))
n.CA <- sum(!is.na(match(C, A)))
n.ABC <- n.A + n.B + n.C - (n.AB + n.BC + n.CA)

# ベン図を作成するために各グループの割合などを計算してvに格納
v <- venneuler(c(A = n.A, B = n.B, C = n.C, "A&B" = n.AB, "B&C" = n.BC, "C&A" = n.CA, "A&B&C" = n.ABC))
# ベン図
plot(
  v,                    # venneulerで計算したベン図データ
  main = "Venn",        # タイトル
  col = c(2, 4, 3)      # ベン図の背景色
)
venneulerによるベン図描画

VennDiagram

VennDiagram パッケージにもベン図を描く関数が用意されている。

library(VennDiagram)

# グループを準備
dna.bind <- c("3U5Z", "3PT6", "1MHT", "1SSO", "1H1J", "1RIY")
xra      <- c("3U5Z", "3PT6", "1MHT", "1T2K")
nmr      <- c("1SSO", "1H1J", "2KI2")
# データをリスト型に変換
data <- list(DNAB = dna.bind, XRAY = xra, SNMR = nmr)

# ベン図
venn.diagram(
  data,                        # リスト型データ
  fill = c(3, 2, 7),           # ベン図の背景
  alpha = c(0.5, 0.5 , 0.5),   # 背景の透明率
  lty = c(1, 2, 3),            # 枠線のタイプ
  filename = "venn.tiff"       # TIFFファイル名
)