Diagramme de Venn avec R ou RStudio : Un Million de Façons



Diagramme de Venn avec R ou RStudio : Un Million de Façons

Cet article propose de multiples solutions pour créer un magnifique diagramme de Venn avec R ou RStudio. Les packages R suivants seront illustrés : ggvenn, ggVenDiagram, VennDiagram et gplots.



Sommaire:

Créer une donnée de démonstration

set.seed(20190708)
genes <- paste("gene",1:1000,sep="")
x <- list(
  A = sample(genes,300), 
  B = sample(genes,525), 
  C = sample(genes,440),
  D = sample(genes,350)
  )

Utilisation du package R ggvenn

Ce package est une extension de ggplot2. Une couleur peut être attribuée à chaque groupe.

Installation:

if (!require(devtools)) install.packages("devtools")
devtools::install_github("yanlinlin82/ggvenn")

Utilisation:

library(ggvenn)
ggvenn(
  x, 
  fill_color = c("#0073C2FF", "#EFC000FF", "#868686FF", "#CD534CFF"),
  stroke_size = 0.5, set_name_size = 4
  )

Plus d’informations ici : Beau diagramme de Venn GGPlot avec R

Utilisation du package R ggVennDiagram

Ce package est une extension de ggplot2. Le package ggVennDiagram fait correspondre la couleur de remplissage de chaque région à une quantité, ce qui nous permet d’observer visuellement les différences entre les différentes parties.

Installation:

if (!require(devtools)) install.packages("devtools")
devtools::install_github("gaospecial/ggVennDiagram")

Utilisation:

library("ggVennDiagram")
ggVennDiagram(x, label_alpha = 0)

Plus d’informations ici : Beau diagramme de Venn GGPlot avec R

Utilisation du package R VennDiagram

Installation:

install.packages("VennDiagram")`

Utilisation:

Créer un diagramme de Venn et l’enregistrer dans un fichier. La fonction venn.diagram() prend une liste et crée un fichier contenant un diagramme de Venn de qualité publication.

library(VennDiagram)
venn.diagram(x, filename = "venn-4-dimensions.png")

Afficher le graphique directement dans R:

# Fonction d'aide pour afficher le diagramme de Venn
display_venn <- function(x, ...){
  library(VennDiagram)
  grid.newpage()
  venn_object <- venn.diagram(x, filename = NULL, ...)
  grid.draw(venn_object)
}
# Diagramme de Venn en quatre dimensions
display_venn(x)

# Diagramme de Venn en trois dimensions
display_venn(x[1:3])

# Changer les noms de catégories
# Changer la couleur de remplissage
display_venn(
  x,
  category.names = c("Set 1" , "Set 2 " , "Set 3", "Set 4"),
  fill = c("#999999", "#E69F00", "#56B4E9", "#009E73")
  )

# Personnalisation supplémentaire
display_venn(
        x,
        category.names = c("Set 1" , "Set 2 " , "Set 3", "Set 4"),
        # Cercles
        lwd = 2,
        lty = 'blank',
        fill = c("#999999", "#E69F00", "#56B4E9", "#009E73"),
        # Nombres
        cex = .9,
        fontface = "italic",
        # Noms des groupes
        cat.cex = 1,
        cat.fontface = "bold",
        cat.default.pos = "outer",
        cat.dist = c(0.055, 0.055, 0.1, 0.1)
)

Utilisation du package R gplots

Installation:

install.package("gplots")`

Utilisation:

library(gplots)
v.table <- venn(x)

Accès aux données relatives aux intersections:

print(v.table)
##      num A B C D
## 0000   0 0 0 0 0
## 0001  58 0 0 0 1
## 0010 111 0 0 1 0
## 0011  37 0 0 1 1
## 0100 144 0 1 0 0
## 0101  66 0 1 0 1
## 0110 108 0 1 1 0
## 0111  56 0 1 1 1
## 1000  50 1 0 0 0
## 1001  35 1 0 0 1
## 1010  31 1 0 1 0
## 1011  33 1 0 1 1
## 1100  46 1 1 0 0
## 1101  41 1 1 0 1
## 1110  40 1 1 1 0
## 1111  24 1 1 1 1
## attr(,"intersections")
## attr(,"intersections")$A
##  [1] "gene835" "gene910" "gene866" "gene785" "gene532" "gene385" "gene201" "gene74"  "gene941" "gene401" "gene642"
## [12] "gene299" "gene819" "gene245" "gene834" "gene700" "gene422" "gene176" "gene643" "gene852" "gene584" "gene560"
## [23] "gene638" "gene164" "gene122" "gene419" "gene521" "gene363" "gene724" "gene160" "gene988" "gene328" "gene452"
## [34] "gene236" "gene707" "gene865" "gene342" "gene165" "gene572" "gene565" "gene206" "gene663" "gene107" "gene620"
## [45] "gene917" "gene298" "gene402" "gene840" "gene992" "gene225"
## 
## attr(,"intersections")$B
##   [1] "gene129" "gene150" "gene307" "gene73"  "gene651" "gene40"  "gene722" "gene374" "gene779" "gene772"
##  [11] "gene574" "gene355" "gene970" "gene429" "gene979" "gene656" "gene208" "gene274" "gene252" "gene585"
##  [21] "gene662" "gene535" "gene709" "gene589" "gene964" "gene569" "gene113" "gene851" "gene111" "gene308"
##  [31] "gene18"  "gene309" "gene977" "gene530" "gene929" "gene720" "gene83"  "gene256" "gene217" "gene287"
##  [41] "gene596" "gene776" "gene573" "gene99"  "gene470" "gene689" "gene44"  "gene473" "gene380" "gene246"
##  [51] "gene774" "gene799" "gene621" "gene134" "gene659" "gene947" "gene322" "gene397" "gene664" "gene266"
##  [61] "gene556" "gene210" "gene272" "gene389" "gene84"  "gene771" "gene55"  "gene349" "gene51"  "gene137"
##  [71] "gene462" "gene106" "gene353" "gene801" "gene943" "gene297" "gene678" "gene546" "gene617" "gene289"
##  [81] "gene480" "gene361" "gene913" "gene875" "gene948" "gene777" "gene788" "gene743" "gene199" "gene879"
##  [91] "gene229" "gene951" "gene447" "gene175" "gene715" "gene942" "gene668" "gene698" "gene559" "gene812"
## [101] "gene52"  "gene337" "gene413" "gene757" "gene472" "gene526" "gene876" "gene567" "gene813" "gene147"
## [111] "gene685" "gene114" "gene614" "gene427" "gene508" "gene247" "gene540" "gene986" "gene241" "gene731"
## [121] "gene591" "gene279" "gene120" "gene346" "gene403" "gene333" "gene922" "gene135" "gene200" "gene603"
## [131] "gene914" "gene820" "gene492" "gene19"  "gene978" "gene804" "gene655" "gene332" "gene958" "gene903"
## [141] "gene564" "gene989" "gene386" "gene151"
## 
## attr(,"intersections")$C
##   [1] "gene169" "gene390" "gene265" "gene581" "gene250" "gene634" "gene188" "gene319" "gene994" "gene366"
##  [11] "gene213" "gene610" "gene661" "gene654" "gene453" "gene935" "gene193" "gene251" "gene243" "gene545"
##  [21] "gene178" "gene411" "gene737" "gene953" "gene902" "gene557" "gene691" "gene221" "gene920" "gene495"
##  [31] "gene474" "gene543" "gene695" "gene100" "gene686" "gene383" "gene125" "gene608" "gene278" "gene59" 
##  [41] "gene895" "gene828" "gene288" "gene611" "gene441" "gene396" "gene93"  "gene448" "gene428" "gene367"
##  [51] "gene438" "gene459" "gene579" "gene395" "gene248" "gene867" "gene45"  "gene29"  "gene437" "gene77" 
##  [61] "gene70"  "gene484" "gene633" "gene85"  "gene854" "gene490" "gene177" "gene426" "gene887" "gene550"
##  [71] "gene923" "gene792" "gene412" "gene212" "gene590" "gene292" "gene795" "gene30"  "gene159" "gene304"
##  [81] "gene471" "gene62"  "gene790" "gene28"  "gene770" "gene533" "gene575" "gene173" "gene832" "gene860"
##  [91] "gene683" "gene878" "gene818" "gene944" "gene789" "gene357" "gene391" "gene888" "gene919" "gene796"
## [101] "gene631" "gene82"  "gene733" "gene732" "gene197" "gene368" "gene909" "gene816" "gene843" "gene765"
## [111] "gene898"
## 
## attr(,"intersections")$D
##  [1] "gene738" "gene321" "gene149" "gene938" "gene487" "gene145" "gene783" "gene15"  "gene871" "gene475" "gene528"
## [12] "gene706" "gene130" "gene570" "gene43"  "gene489" "gene640" "gene161" "gene293" "gene966" "gene171" "gene498"
## [23] "gene926" "gene701" "gene632" "gene649" "gene853" "gene702" "gene869" "gene831" "gene392" "gene694" "gene271"
## [34] "gene650" "gene880" "gene906" "gene541" "gene538" "gene420" "gene140" "gene677" "gene124" "gene644" "gene233"
## [45] "gene868" "gene152" "gene800" "gene12"  "gene496" "gene39"  "gene726" "gene674" "gene226" "gene379" "gene916"
## [56] "gene602" "gene857" "gene523"
## 
## attr(,"intersections")$`A:B`
##  [1] "gene168" "gene301" "gene86"  "gene133" "gene786" "gene235" "gene209" "gene205" "gene451" "gene372" "gene794"
## [12] "gene889" "gene838" "gene604" "gene280" "gene848" "gene249" "gene965" "gene877" "gene599" "gene263" "gene607"
## [23] "gene998" "gene17"  "gene561" "gene592" "gene123" "gene186" "gene270" "gene872" "gene96"  "gene170" "gene645"
## [34] "gene817" "gene239" "gene957" "gene993" "gene222" "gene154" "gene510" "gene983" "gene476" "gene658" "gene253"
## [45] "gene773" "gene973"
## 
## attr(,"intersections")$`A:C`
##  [1] "gene393" "gene20"  "gene71"  "gene479" "gene343" "gene826" "gene56"  "gene87"  "gene8"   "gene50"  "gene115"
## [12] "gene464" "gene981" "gene760" "gene485" "gene54"  "gene255" "gene822" "gene892" "gene359" "gene325" "gene117"
## [23] "gene769" "gene805" "gene497" "gene516" "gene855" "gene488" "gene553" "gene763" "gene862"
## 
## attr(,"intersections")$`A:D`
##  [1] "gene982" "gene46"  "gene901" "gene697" "gene782" "gene635" "gene563" "gene692" "gene269" "gene657" "gene132"
## [12] "gene25"  "gene261" "gene211" "gene486" "gene710" "gene991" "gene126" "gene870" "gene121" "gene404" "gene499"
## [23] "gene945" "gene833" "gene172" "gene219" "gene830" "gene406" "gene345" "gene797" "gene444" "gene3"   "gene64" 
## [34] "gene544" "gene10" 
## 
## attr(,"intersections")$`B:C`
##   [1] "gene703"  "gene874"  "gene27"   "gene627"  "gene182"  "gene254"  "gene41"   "gene163"  "gene967" 
##  [10] "gene257"  "gene975"  "gene899"  "gene962"  "gene494"  "gene845"  "gene189"  "gene47"   "gene326" 
##  [19] "gene109"  "gene940"  "gene514"  "gene334"  "gene588"  "gene897"  "gene780"  "gene264"  "gene158" 
##  [28] "gene424"  "gene600"  "gene750"  "gene587"  "gene858"  "gene766"  "gene511"  "gene524"  "gene500" 
##  [37] "gene856"  "gene515"  "gene861"  "gene320"  "gene240"  "gene338"  "gene939"  "gene849"  "gene810" 
##  [46] "gene423"  "gene775"  "gene69"   "gene752"  "gene622"  "gene502"  "gene713"  "gene542"  "gene755" 
##  [55] "gene431"  "gene153"  "gene905"  "gene598"  "gene667"  "gene439"  "gene192"  "gene88"   "gene764" 
##  [64] "gene194"  "gene408"  "gene282"  "gene884"  "gene626"  "gene162"  "gene90"   "gene335"  "gene995" 
##  [73] "gene823"  "gene273"  "gene295"  "gene183"  "gene468"  "gene315"  "gene1000" "gene507"  "gene348" 
##  [82] "gene259"  "gene803"  "gene911"  "gene577"  "gene1"    "gene728"  "gene873"  "gene223"  "gene101" 
##  [91] "gene63"   "gene781"  "gene446"  "gene864"  "gene81"   "gene196"  "gene195"  "gene615"  "gene354" 
## [100] "gene719"  "gene954"  "gene549"  "gene23"   "gene376"  "gene613"  "gene809"  "gene606"  "gene26"  
## 
## attr(,"intersections")$`B:D`
##  [1] "gene456" "gene747" "gene839" "gene699" "gene759" "gene364" "gene230" "gene327" "gene886" "gene268" "gene14" 
## [12] "gene527" "gene260" "gene112" "gene985" "gene204" "gene681" "gene595" "gene36"  "gene128" "gene824" "gene180"
## [23] "gene352" "gene351" "gene971" "gene660" "gene7"   "gene224" "gene744" "gene609" "gene793" "gene666" "gene97" 
## [34] "gene136" "gene506" "gene285" "gene156" "gene946" "gene725" "gene102" "gene883" "gene33"  "gene387" "gene605"
## [45] "gene740" "gene339" "gene329" "gene139" "gene568" "gene432" "gene980" "gene504" "gene505" "gene517" "gene460"
## [56] "gene687" "gene629" "gene218" "gene671" "gene734" "gene375" "gene932" "gene167" "gene639" "gene407" "gene416"
## 
## attr(,"intersections")$`C:D`
##  [1] "gene399" "gene960" "gene531" "gene708" "gene323" "gene837" "gene704" "gene381" "gene95"  "gene458" "gene503"
## [12] "gene493" "gene443" "gene915" "gene281" "gene891" "gene716" "gene636" "gene220" "gene762" "gene179" "gene696"
## [23] "gene844" "gene42"  "gene314" "gene184" "gene394" "gene937" "gene896" "gene672" "gene918" "gene103" "gene324"
## [34] "gene721" "gene286" "gene141" "gene928"
## 
## attr(,"intersections")$`A:B:C`
##  [1] "gene882" "gene157" "gene49"  "gene119" "gene384" "gene5"   "gene166" "gene807" "gene586" "gene296" "gene969"
## [12] "gene231" "gene108" "gene317" "gene227" "gene934" "gene554" "gene421" "gene316" "gene418" "gene16"  "gene330"
## [23] "gene481" "gene714" "gene53"  "gene340" "gene730" "gene347" "gene283" "gene181" "gene727" "gene571" "gene836"
## [34] "gene679" "gene445" "gene501" "gene933" "gene410" "gene529" "gene94" 
## 
## attr(,"intersections")$`A:B:D`
##  [1] "gene904" "gene79"  "gene207" "gene382" "gene331" "gene753" "gene924" "gene356" "gene142" "gene463" "gene341"
## [12] "gene537" "gene829" "gene144" "gene21"  "gene815" "gene4"   "gene729" "gene646" "gene931" "gene997" "gene312"
## [23] "gene859" "gene594" "gene465" "gene684" "gene949" "gene539" "gene440" "gene398" "gene425" "gene174" "gene597"
## [34] "gene405" "gene653" "gene612" "gene75"  "gene927" "gene378" "gene370" "gene908"
## 
## attr(,"intersections")$`A:C:D`
##  [1] "gene449" "gene369" "gene78"  "gene414" "gene358" "gene749" "gene984" "gene893" "gene37"  "gene32"  "gene148"
## [12] "gene718" "gene907" "gene138" "gene739" "gene723" "gene578" "gene930" "gene336" "gene680" "gene234" "gene455"
## [23] "gene547" "gene756" "gene388" "gene688" "gene717" "gene754" "gene758" "gene61"  "gene552" "gene518" "gene202"
## 
## attr(,"intersections")$`B:C:D`
##  [1] "gene558" "gene131" "gene238" "gene65"  "gene536" "gene955" "gene630" "gene6"   "gene641" "gene682" "gene802"
## [12] "gene576" "gene900" "gene827" "gene814" "gene433" "gene624" "gene601" "gene127" "gene228" "gene310" "gene652"
## [23] "gene670" "gene841" "gene894" "gene936" "gene365" "gene711" "gene616" "gene974" "gene566" "gene216" "gene921"
## [34] "gene466" "gene2"   "gene302" "gene311" "gene806" "gene520" "gene811" "gene191" "gene277" "gene360" "gene990"
## [45] "gene232" "gene469" "gene400" "gene214" "gene665" "gene72"  "gene846" "gene31"  "gene92"  "gene583" "gene242"
## [56] "gene483"
## 
## attr(,"intersections")$`A:B:C:D`
##  [1] "gene371" "gene735" "gene787" "gene38"  "gene66"  "gene415" "gene284" "gene477" "gene768" "gene454" "gene522"
## [12] "gene784" "gene582" "gene34"  "gene618" "gene741" "gene850" "gene373" "gene742" "gene912" "gene748" "gene291"
## [23] "gene863" "gene143"
## 
## attr(,"class")
## [1] "venn"

Conclusion

Cet article décrit de multiples solutions pour créer des diagrammes de Venn dans R.



Version: English





No Comments

Give a comment

Want to post an issue with R? If yes, please make sure you have read this: How to Include Reproducible R Script Examples in Datanovia Comments