ベン図の限界とUpSet


ベン図とは

複数の要素を持つセット間の要素の重複を可視化するものだ。
Pythonとmatplotlib_venn で例を示す。

from matplotlib_venn import venn3
set1 = set(['1', '2', '3', '5', '7', '8', '11', '12', '13'])
set2 = set(['1', '2', '4', '5', '10'])
set3 = set(['1', '5', '6', '7', '8', '9', '10', '12', '13'])
venn3([set1, set2, set3], ('Set1', 'Set2', 'Set3'))

ベン図の問題

  • 「セット間で重なっている面積」は「セット間要素の重複数」を必ずしも反映しない(またその実装がかなり難しい[というかできない?])
  • セット数が多くなると破綻する

ベン図に替わるUpSet

とにかくUpSetの実例を示す。
RとUpSetRを用いる。

library(UpSetR)
listInput <- list(one = c(1, 2, 3, 5, 7, 8, 11, 12, 13), two = c(1, 2, 4, 5, 
    10), three = c(1, 5, 6, 7, 8, 9, 10, 12, 13))
upset(fromList(listInput), order.by = "freq")

UpSetの図が示すものの説明は不要だろう(先程のベン図と見比べてもらえれば何が何と対応しているかわかるだろう)。
逆に言うと言葉が要らないのが可視化ってもんか。

UpSetの歴史と今

UpSetの可視化手法(アイデア)が論文(DOI: 10.1109/TVCG.2014.2346248)として公開されたのは2014年のようだ。このようなシンプルな可視化手法がこんな最近まで出なかったことに驚きを感じる人がいるかもしれない。「図を組み合わせて何かを表現する」ってのが革新的で、以前にはこの発想が無かったのかもしれない。バイオインフォではこの図は重宝するケースが多く、多くの論文で活用されているようだ。ちなみに前述DOIの論文の引用数は656[2020/12/04 Google調べ]でかなりのもんである。

結論

可視化でやれることはアイデア次第でまだまだある。

以上