2017-10-30 9 views
0

私は、venn diagramで視覚的に比較したいいくつかの遺伝子リスト(様々な長さのすべて)を持っています。 ReShape2を使って遺伝子名のデータフレームをVenneulerがVenn Diagramをプロットするために使用できる1と0の行列に変換する少しの関数を書いた。私の問題は、ベン図の各部分に関連する値を抽出/計算する方法を理解できないことです。遺伝子名のテーブルを変換します行列からプロットされたvenneuler vennダイアグラムに数を加える方法

A <- c("gene1", "gene2", "gene3", "gene5", "gene12", "", "") 
B <- c("gene1", "gene2", "gene6", "gene7", "", "", "") 
C <- c("gene2", "gene6", "gene7", "gene8", "gene9", "gene13", "gene14") 
D <- c("gene7", "gene8", "gene9", "gene10", "gene11", "gene12", "") 
dat <- data.frame(A,B,C,D) 

機能:私はR.

で私のプロットにそれらの値を追加することができればさらに、それは素敵なことだ。ここに私のデータがどのように見えるかの例ですVennuelerが使用できる存在/不在行列:

vennfun <- function(x) { 
    x$id <- seq(1, nrow(x)) #add a column of numbers (required for melt) 
    xm <- melt(x, id.vars="id", na.rm=TRUE) #melt table into two columns (value & variable) 
    xc <- dcast(xm, value~variable, fun.aggregate=length) #remove NA's, list presence/absence of each value for each variable (1 or 0) 
    rownames(xc) <- xc$value #value column = rownames (required for Venneuler) 
    xc$value <- NULL #remove redundent value column 
    xc #output the new dataframe 
} 

ロード必要なパッケージ:

library(reshape2) 
library(venneuler) 

実行vennfunとvenneulerとベン図をプロットするために、出力を使用します。

VennDat <- vennfun(dat) 
genes.venn <- venneuler(VennDat) 
plot(genes.venn) 

私の質問です:私はすべての可能な状態に関連する遺伝子の数を得るのですか(すなわち、 A、AB、ABC、ABCD、B、BC、BCD、ABD、ACDなど)、および/またはこれらの値を私のベン図にどのように追加するのですか?

ありがとうございます!

答えて

0

あなたがパッケージを変更するために喜んでいる場合は、あなたがeulerr(私はの作者だということ)でこれを達成することができます:さておき、この問題はないと

library(eulerr) 
genes.venn <- euler(VennDat) 
plot(genes.venn, counts = TRUE) 

enter image description here

実際にオイラーの図に役立ちます。 (フィット感はかなり悪いです)おそらくあなたは代替案を検討すべきでしょうか?

関連する問題