web-dev-qa-db-fra.com

Diagramme de Venn proportionnel et dégradé de couleur avec semi-transparence

J'ai le type suivant de données de compte.

A   450
B   1800
A and B both    230

Je souhaite développer un rendu coloré (éventuellement semi-transparent aux intersections), comme dans le diagramme de Venn suivant.

enter image description here

Note: Ce chiffre est un exemple dessiné à la main dans PowerPoint et dont l'échelle n'est pas à l'échelle.

53
jon

Voici un article qui traite diagramme de Venn de la liste des grappes et des facteurs concomitants .

Pour une solution facile, utilisez le paquetage 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, vérifiez le package VennDiagram .

49
Geek On Acid

Sur la base de la deuxième réponse de Geek On Acid, deuxième suggestion (merci encore une fois), je pourrais également régler le problème de la ligne. 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

41
jon

J'ai récemment publié un nouveau package R, eulerr , qui fait ce que vous voulez. C'est assez 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 du même paquetage à l’adresse eulerr.co

shiny-euler

35
Johan Larsson

Même si cela ne répond pas complètement à votre question. Je pensais que cela serait utile pour les autres personnes cherchant à 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 des couleurs et de la transparence à l'aide d'illustrator. enter image description here

16
ktyagi

Il existe un traceur proportionnel intuitif et flexible que vous pouvez télécharger et exécuter. Trouvez-le à: http://omics.pnl.gov/software/VennDiagramPlotter.php

et

jvenn : un visualiseur interactif de diagrammes de Venn - GenoToul Bioinfo: http://bioinfo.genotoul.fr/jvenn/

4
Nirupa Chaudhari

Je sais que le PO demande une solution dans R, mais je voudrais signaler une solution Web appelée BioVenn . Il prend jusqu'à 3 listes d'éléments et dessine un diagramme de Venn de sorte que chaque surface soit proportionnelle au nombre d'éléments - comme celui-ci:

enter image description here

Dans ce diagramme, j'ai modifié manuellement (via PhotoShop) la position des numéros car je n'aimais pas les emplacements choisis par BioVenn. Mais vous pouvez choisir de ne pas avoir de chiffres.

En théorie, les listes utilisées avec BioVenn doivent comporter des identifiants de gènes, mais dans la pratique, cela n'a pas d'importance - les listes doivent simplement contenir des chaînes.

4
Nick