Diagramme de Venn avec un ombrage proportionnel et coloré avec une semi-transparence

j'ai le type de données de comptage suivant.

A   450
B   1800
A and B both    230

je veux développer un coloré (éventuellement semi-transparence aux intersections) comme le diagramme de Venn suivant.

enter image description here

Note: cette figure est un exemple dessiné à la main dans PowerPoint, et il n'est pas à l'échelle.

50
demandé sur zx8754 2012-01-03 18:47:20

6 réponses

voici un post qui discute diagramme de Venn de la liste des grappes et des facteurs Co-occurrents .

Pour la solution facile est d'utiliser le paquet venneuler :

require(venneuler)
v <- venneuler(c(A=450, B=1800, "A&B"=230))
plot(v)

enter image description here

pour des solutions plus avancées et personnalisées, consultez le package VennDiagram .

47
répondu Geek On Acid 2017-05-23 10:31:33

basé sur la deuxième réponse de Geek sur la deuxième suggestion D'acide ( merci encore ) je pourrais sove le problème de ligne aussi bien. Je poste si cela est pertinent pour d'autres googlers !

  require(VennDiagram)
    venn.diagram(list(B = 1:1800, A = 1571:2020),fill = c("red", "green"),
  alpha = c(0.5, 0.5), cex = 2,cat.fontface = 4,lty =2, fontfamily =3, 
   filename = "trial2.emf");

enter image description here

40
répondu jon 2012-01-03 17:35:12

j'ai récemment publié un nouveau paquet R, Euler , qui fait ce que vous voulez. Il est tout à fait similaire à venneuler mais sans ses incohérences.

library(eulerr)
fit <- euler(c(A = 450, B = 1800, "A&B" = 230))
plot(fit)

eulerplot

ou vous pouvez essayer l'application brillante pour le même paquet r à Euler.co

shiny-euler

24
répondu Johan Larsson 2018-03-06 18:52:31

même si cela ne répond pas complètement à votre question. J'ai pensé que ce sera utile pour d'autres personnes qui cherchent à tracer le diagramme de Venn. On peut utiliser la fonction venn() du paquet gplots: http://www.inside-r.org/packages/cran/gplots/docs/venn

## modified slightly from the example given in the documentation
## Example using a list of item names belonging to the
## specified group.
##
require(gplots) 
## construct some fake gene names..
oneName <- function() paste(sample(LETTERS,5,replace=TRUE),collapse="")
geneNames <- replicate(1000, oneName())

## 
GroupA <- sample(geneNames, 400, replace=FALSE)
GroupB <- sample(geneNames, 750, replace=FALSE)
GroupC <- sample(geneNames, 250, replace=FALSE)
GroupD <- sample(geneNames, 300, replace=FALSE)

venn(list(GrpA=GroupA,GrpB=GroupB,GrpC=GroupC,GrpD=GroupD))

enter image description here Ensuite j'ajoute juste des couleurs et de la transparence en utilisant illustrator. enter image description here

13
répondu ktyagi 2014-04-10 14:41:55

il y a un traceur proportionnel intuitif et flexible que vous pouvez télécharger et exécuter. Trouver à: http://omics.pnl.gov/software/VennDiagramPlotter.php

et

jvenn : un visualiseur interactif de diagramme de Venn-Génotoul Bioinfo: http://bioinfo.genotoul.fr/jvenn/

4
répondu Nirupa Chaudhari 2014-12-03 12:51:03

je sais que L'OP demande une solution en R mais je voudrais pointer vers une solution basée sur le web appelé BioVenn . Il faut jusqu'à 3 listes d'éléments et dessine un diagramme de Venn, de sorte que chaque surface est proportionnelle au nombre d'éléments - comme celui-ci:

enter image description here

dans ce diagramme j'ai changé manuellement (via PhotoShop) l'emplacement des nombres car je n'ai pas aimé les emplacements choisis par BioVenn. Mais vous pouvez choisir de ne pas avoir les chiffres.

en théorie, les listes utilisées avec BioVenn seront composées d'identificateurs de gènes mais, en pratique, cela n'a pas d'importance - les listes doivent simplement contenir des chaînes.

4
répondu Nick 2015-02-14 22:08:42