いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【R】ベン図を描いてみたい②

・お題:要素の重なりを視覚的に表現したグラフに、ベン図というのがある。先日、ggVennDiagramというパッケージでベン図を描いてみたが、重なった要素がないところも形式上重なったグラフになっていた。他のパッケージを使ってもうちょっと何とかできるとちょっとうれしい。

 

・venneulerというパッケージを使ってトライしようとしたがなんだか上手く行かなかった(インストールは割愛)。ライブラリを読み込もうとすると、エラーが出た。

> library(venneuler)

・rJavaをロードできなかったらしい。私は素人なので、エラーが出ると狼狽する。ググって解決するか、他のパッケージをインストールするかしか選択肢はない。少しググっていると、もっと新しく、目的を達成できるらしいパッケージの情報があった。

・そこで、eulerrというパッケージを使ってみた(以下参照)。

cran.r-project.org

・オプションに関しては、以下のサイトも参考にさせて頂いた。

zenn.dev

 

・ちなみに、なんでオイラーなのかと思って調べてみると、ベン図のより広い概念がオイラー図らしい。へぇ。。

visualizing.jp

・パッケージをインストール(割愛)し、ライブラリを立ち上げた。

> library(eulerr)

・次に、チュートリアルそのままに、A、B、Cのグループとそれぞれ重なった要素の数を入力し、図示する。

> fit1 <- euler(c("A" = 25, "B" = 5, "C" = 5,
+                 "A&B" = 5, "A&C" = 5, "B&C" = 3,
+                 "A&B&C" = 3))
> plot(fit1, quantities = T)

・error_plot関数で適合度合いを算出できるらしい。難しいことはさっぱり分からないので、気になる方は元サイトをご確認いただきたい。
> error_plot(fit1)

・こういう図示もできる。
> wilkinson2012 <-  c(A = 4, B = 6, C = 3, D = 2, E = 7, F = 3,
+                     "A&B" = 2, "A&F" = 2, "B&C" = 2, "B&D" = 1,
+                     "B&F" = 2, "C&D" = 1, "D&E" = 1, "E&F" = 1,
+                     "A&B&F" = 1, "B&C&D" = 1)
> fit3 <- euler(wilkinson2012,
+               shape = "ellipse")
> plot(fit3, quantities = T)

・その他にも、凡例を外に出したり、枠線の色を変えたり、いろいろなことができるらしい(気になる方は参考サイトをご確認いただきたい)。

・もう少し調べていると、web上でeulerrを使って作図できるサイトを見つけた。

eulerr.co

・少し意地悪目の作図を試してみた。丸で描くと、B&Cの要素がゼロでも、どうしてもB&Cをゼロにできなかったらしく、重なりがある。

・そういう場合でも、楕円を選択すれば、うまいこと調整してくれた。

・どんな場合でもピッタリの作図をしてくれるわけではないと思うので、過信は禁物だと思うし、グラフがダイナミックに変化するので、場合によっては却って情報を把握しにくくなるかもしれない。ケースバイケースでグラフ(を作成するパッケージ)を使い分けたほうが良さそう。

 

おわり