【R畫(huà)圖學(xué)習(xí)6.1】Venn圖---VennDiagram

這2天我們系統(tǒng)的學(xué)習(xí)一些畫(huà)venn圖的一些技巧。我們今天先測(cè)試這個(gè)最常用的包VennDiagram。

library(VennDiagram)

我們先隨機(jī)生成一組測(cè)試數(shù)據(jù):

set1 <- paste(rep("test_" , 200) , sample(c(1:10000) , 200 , replace=F) , sep="")

set2 <- paste(rep("test_" , 500) , sample(c(1:10000) , 500 , replace=F) , sep="")

set3 <- paste(rep("test_" , 300) , sample(c(1:10000) , 300 , replace=F) , sep="")

其中rep函數(shù)前面用過(guò)很多次了,就是重復(fù)第一個(gè)變量多少次;paste是字符串連接符;sample函數(shù)可以完成隨機(jī)抽樣。

sample(x, size, replace = FALSE)

具體參數(shù)說(shuō)明:

x? 整體數(shù)據(jù),以向量形式給出

size? 抽取樣本的數(shù)目

replace? 如果為F(默認(rèn)),則是不重復(fù)抽樣,此時(shí)size不能大于x的長(zhǎng)度;

如果為T,則是重復(fù)抽樣,此時(shí)size允許大于x的長(zhǎng)度

先畫(huà)最簡(jiǎn)單的venn圖:

venn.diagram(

? x = list(set1, set2, set3),

? category.names = c("Set 1" , "Set 2 " , "Set 3"),

? filename = 'test1.png',

? output=TRUE

)

這個(gè)就展示一個(gè)最簡(jiǎn)單的venn圖,并且直接保存到了輸出文件test1.png中。

如果我們想在R里面展示的話,需要通過(guò)grid.draw操作實(shí)現(xiàn)。

p1 <- venn.diagram(

? x = list(set1, set2, set3),

? category.names = c("Set 1" , "Set 2 " , "Set 3"),

? filename = NULL

)

# 展示圖片:

grid.newpage()

grid.draw(p1)

下面我們來(lái)做細(xì)化和美化,比如修改自己想要的色系。

library(RColorBrewer)

myCol <- brewer.pal(3, "Pastel2")

venn.diagram(

? x = list(set1, set2, set3),

? category.names = c("Set 1" , "Set 2 " , "Set 3"),

? filename = 'test2.png',

? output=TRUE,

? # 設(shè)置輸出:

? imagetype="png" ,

? height = 1000 ,

? width = 1000 ,

? resolution = 300,

? compression = "lzw",

? # 圓的外觀調(diào)整:

? lwd = 2, # 描邊粗細(xì)

? lty = "blank",? # 去掉描邊

? fill = myCol,? # 填充顏色

)

venn.diagram(

? x = list(set1, set2, set3),

? category.names = c("Set 1" , "Set 2 " , "Set 3"),

? filename = 'test2.png',

? output=TRUE,

? imagetype="png" ,

? height = 1000 ,

? width = 1000 ,

? resolution = 300,

? compression = "lzw",

? lwd = 2, # 描邊粗細(xì)

? lty = "blank",? # 去掉描邊

? fill = myCol,? # 填充顏色

? # 文字大?。?/p>

? cex = .5,? # 大??;

? fontface = "bold",? # 粗體

? fontfamily = "sans",? # 字體

)

venn.diagram(

? x = list(set1, set2, set3),

? category.names = c("Set 1" , "Set 2 " , "Set 3"),

? filename = 'test2.png',

? output=TRUE,

? imagetype="png" ,

? height = 1000 ,

? width = 1000 ,

? resolution = 300,

? compression = "lzw",

? lwd = 2, # 描邊粗細(xì)

? lty = "blank",? # 去掉描邊

? fill = myCol,? # 填充顏色

? # 文字大小:

? cex = .5,? # 大小;

? fontface = "bold",? # 粗體

? fontfamily = "sans",? # 字體

?# 每個(gè)集合的名稱的調(diào)整:

? cat.cex = 1.2,

? cat.fontface = "bold",

? cat.default.pos = "outer",? # 集合名稱位置:outer -- 外部;text -- 內(nèi)部

? cat.pos = c(-30,30, 180),? # 集合名稱分別在圈圈的什么角度

? cat.dist = c(0.07, 0.07, 0.055),? # 外部多少距離

? cat.fontfamily = "sans",

? rotation = 1? # 旋轉(zhuǎn)

)

下面,我們嘗試畫(huà)一下更復(fù)雜一點(diǎn)的四維和五維韋恩圖。

set4 <- paste(rep("test_" , 500) , sample(c(1:10000) , 500 , replace=F) , sep="")

set5 <- paste(rep("test_" , 300) , sample(c(1:10000) , 300 , replace=F) , sep="")

fillcolor4 <-? c("#ffd7d8", "#d8f2e7", "#d9e7f2", "#eadff0")

venn.diagram(

? x = list(set1,set2,set3,set4),

? category.names = c("Set 1" , "Set 2 " , "Set 3", "Set 4"),

? filename = "test3.png",

? # 設(shè)置輸出:

? imagetype="png" ,

? height = 1000 ,

? width = 1000 ,

? resolution = 300,

? compression = "lzw",


? # 圓圈屬性:

? col = "white",? # 描邊顏色

? lty = 1, # 虛線形式:1,2,3,4,5可選

? lwd = 1,? # 粗細(xì)

? fill =fillcolor4,? # 填充顏色;

? alpha = 0.90, # 透明度

? # 標(biāo)簽屬性,這里可以修改圈內(nèi)的文字的屬性,比如顏色等

? label.col = "black",

? ? ? ? ? ? ? #c("#ffd7d8", "black", "#d8f2e7", "black", "black", "black",

? ? ? ? ? ? ? #"black", "black", "#d9e7f2", "black",

? ? ? ? ? ? ? # "black", "black", "black", "#eadff0", "black"),

? cex = 0.9, # 字體大小

? fontfamily = "serif",

? fontface = "bold",

? # 集合名稱屬性:

? cat.col = c("#cb6274", "#7ba498", "#687d94", "#81668b"),

? cat.cex = 1.2,

? cat.fontfamily = "serif"

)


venn.diagram(

? x = list(set1,set2,set3,set4,set5),

? category.names = c("Set 1" , "Set 2 " , "Set 3", "Set 4", "Set 5"),

? filename = "test4.png",

? # 設(shè)置輸出:

? imagetype="png" ,

? height = 1200 ,

? width = 1200 ,

? resolution = 300,

? compression = "lzw",

? # 圓圈屬性:

? col = "white",? # 描邊顏色

? lty = 1, # 虛線形式:1,2,3,4,5可選

? lwd = 1,? # 粗細(xì)

? fill = fillcolor5,? # 填充顏色;

? alpha = 0.90, # 透明度

? # 標(biāo)簽屬性:

? label.col = "black",

? # c("#ffd7d8", "black", "#d8f2e7", "black", "black", "black",

? #? ? ? ? ? ? "black", "black", "#d9e7f2", "black",

? #? ? ? ? ? ? "black", "black", "black", "#eadff0", "black"),

? cex = .9, # 字體大小

? fontfamily = "serif",

? fontface = "bold",

? # 集合名稱屬性:

? cat.col = c("#cb6274", "#7ba498", "#687d94", "#81668b", "#ffcf5c"),

? cat.cex = 1.1,

? cat.fontfamily = "serif",

? cat.pos = c(0,-30,-130, 130, 40),

? cat.dist = 0.18? # 外部多少距離

)


但是超過(guò)5維的,一般顯示就比較混亂,比較推薦用upset圖來(lái)表示。

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

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

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