如何使用R語言創(chuàng)建兩圓交叉圖或韋恩圖

#############################方法1

######加載本次所需的R包

library(grid)

library(futile.logger)

1.繪制根據(jù)數(shù)據(jù)量的大小來確定圓的大小,也就是兩圓的大小會(huì)根據(jù)數(shù)據(jù)大小而改變,具體操作如下:

venn.plot <- draw.pairwise.venn(100, 70, 30, c("First", "Second"));


#這里的100, 70, 30分別代表圓1、圓2、兩個(gè)圓交叉的數(shù)


grid.draw(venn.plot);#展示當(dāng)前的圖

grid.newpage();#去除當(dāng)前的圖


結(jié)果圖如下:


2.繪制不根據(jù)數(shù)據(jù)量的大小來確定圓的大小,也就是兩圓的大小相同,具體操作如下:

venn.plot <- draw.pairwise.venn(100, 70, 30, c("First", "Second"), scaled = FALSE);

grid.draw(venn.plot);

grid.newpage();

結(jié)果圖如下:


3.圖形的調(diào)整,包括顏色改變、細(xì)節(jié)修改,具體操作如下:

venn.plot <- draw.pairwise.venn(

? area1 = 100, #區(qū)域1的數(shù)

? area2 = 70, #區(qū)域2的數(shù)

? cross.area = 30, #交叉數(shù)

? category = c("First", "Second"),#分類名稱

? fill = c("#00A087FF","#DC0000FF"),#區(qū)域填充顏色

? lty = "blank", #區(qū)域邊框線類型

? cex = 2, #區(qū)域內(nèi)部數(shù)字的字體大小

? cat.cex = 2, #分類名稱字體大小

? cat.pos = c(285, 105), #分類名稱在圓的位置,默認(rèn)正上方,通過角度進(jìn)行調(diào)整

? cat.dist = 0.09, #分類名稱距離邊的距離(可以為負(fù)數(shù))

? cat.just = list(c(-1, -1), c(1, 1)), #分類名稱的位置

? ext.pos = 30, #線的角度 默認(rèn)是正上方12點(diǎn)位置

? ext.dist = -0.05, #外部線的距離

? ext.length = 0.85, #外部線長度

? ext.line.lwd = 2, #外部線的寬度

? ext.line.lty = "dashed" #外部線為虛線

);

結(jié)果圖如下所示:


這個(gè)方法的優(yōu)點(diǎn)就是可以直接指定第一個(gè)圓,第二個(gè)圓、以及兩圓的交叉數(shù),但缺點(diǎn)也比較明顯,無法顯示百分比,無法用ggplot指定顏色代表什么意思。

網(wǎng)上其他一些畫韋恩圖的方法,比如:ggvenn包

install.packages("ggvenn")

library(ggvenn)

#生成列表數(shù)據(jù)

a<-list( Set1 = c(1:3),

? ? ? ? ? ? Set2 = c(1:5))

b<-list_to_data_frame(a)#列表數(shù)據(jù)轉(zhuǎn)化為數(shù)據(jù)框

ggvenn(b)#利用數(shù)據(jù)框作圖

我們結(jié)合結(jié)果圖和數(shù)據(jù)框理解一下這個(gè)包的思維:

可以看到set1為0,set2為2,交叉部分是3,為什么是這樣的呢?

在生成列表數(shù)據(jù)時(shí)set1是1,2,3;set2是1,2,3,4,5

所以這里1,2,3是兩個(gè)共有的,4,5是set2獨(dú)有的,set1獨(dú)有的沒有

那么,這個(gè)思維理解之后,可以看到數(shù)據(jù)框的意思:

比如1,Set1為TRUE,Set2為TRUE,即代表兩者共有;

比如3,Set1為FALSE,Set2為TRUE,即代表Set2獨(dú)有;

所以按照這個(gè)邏輯繪制兩圓的交叉圖時(shí)候就需要列如下數(shù)據(jù)框的三列變量,

第一列為不同時(shí)值,第二列和第三列就是判斷這個(gè)值是否屬于本列。

值得注意的有兩個(gè)點(diǎn):1是第一列不能有重復(fù)值;2.這個(gè)包最后的百分比合計(jì)就是100%,這個(gè)感覺是個(gè)缺陷,后續(xù)怎么解決,再研究吧


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容