eVennパッケージを使ってベン図を描くときのメモ

タイトルの通りですが、つまづいたので備忘録としてメモします。

ブログを初めて最初の技術っぽい記事ですが、あまり時間が取れないので、やや適当です。。

時間が取れたら追記するかも?

 

Rでベン図を描くためのパッケージには色々ありますが、

 ・ベン図の中に実際の数値を入れたい

 ・使用するデータが、各レコードが、

  どのグループに属すか(ベン図でいうところの丸)を、01で持っているデータ

 ・デザインが一番好み

という理由で、eVennパッケージを選びました。

https://cran.r-project.org/web/packages/eVenn/eVenn.pdf

 

使うにあたり、からだにいいものさんの記事を参考にさせて頂きました。

www.karada-good.net

まずはパッケージをインストールします。  

install.packages("eVenn")
library("eVenn")

 

からだにいいものさんが使用しているデータが、ワテクシが使用したデータと似たような感じなので、

そのまま使わせて頂くと、

# サンプルデータ作成
n <- 100
VennData <- data.matrix(data.frame(Data1 = sample(c(0, 1), n, replace = TRUE),
                                   Data2 = sample(c(0, 1), n, replace = TRUE),
                                   Data3 = sample(c(0, 1), n, replace = TRUE))

# ベン図を描く(今回は3変数)
# prop=TRUEにすると、円の大きさが、所属するデータの数で変化したベン図を作成できます。
evenn(matLists = VennData[, 1:3], pathRes = "", prop = TRUE,
      display = FALSE, CompName="contents_venn2")

すると、以下エラーが出ました。

order(rownames(data_all)) でエラー:  引数 1 がベクトルではありません

「あれ?ワテクシ、order()なんて書いてないぞ?うん?」

ってなって、色々試行錯誤した結果、

使っているmatrixにrownameをつけてやれば解決しました。

# サンプルデータ作成
n <- 100
VennData <- data.matrix(data.frame(Data1 = sample(c(0, 1), n, replace = TRUE),
                                   Data2 = sample(c(0, 1), n, replace = TRUE),
                                   Data3 = sample(c(0, 1), n, replace = TRUE))

# 行名を付与
rownames(VennData) <- c(1:100)

#ベン図を描く(今回は3変数)
evenn(matLists = VennData[, 1:3], pathRes = "", prop = TRUE,
      display = FALSE, CompName="contents_venn2")

f:id:koriakane:20180329211834p:plain

f:id:koriakane:20180329212049p:plain

無事出ました。

本当にこの解決方法でよかったのかは謎です。。