2011-06-05 4 views
1

J'ai la matrice suivante et je veux dessiner un graphique qui se chevauche en utilisant R (préférable) ou Excel.Graphiques se chevauchant en utilisant R ou Excel

a  b  c 
a 1  0.5  0.7 
b 0.5  1  0.4 
c 0.7  0.4  1 

Par exemple, le tableau ci-dessus montre que a et b ont 50% de chevauchement, alors que a et c ont 70%.

+1

Êtes-vous lloking quelque chose comme un Venn diagramme? – Aniko

+0

@Aniko, oui diagramme de Venn en utilisant les données ci-dessus – user751637

+3

http://stackoverflow.com/questions/1428946/venn-diagrams-with-r –

Répondre

0

Si vous voulez chevaucher, vous avez manqué un numéro - chevauchement tous les trois: a, b, c.

Comme Aniko écrire dans le commentaire que vous pourriez utiliser des diagrammes de Venn, par exemple. Vennerable from R-forge.

Installation besoin des paquets de BioConductor:

source("http://bioconductor.org/biocLite.R") 
biocLite(c("graph", "RBGL", "gtools", "xtable")) 
install.packages("Vennerable", repos="http://R-Forge.R-project.org") 

Vous MAST préparer correctement vos données:

require(Vennerable) 
x <- Venn(
    SetNames = c("a", "b", "c"), 
    Weight = c(`100`=1, `010`=1, `001`=1, 
       `110`=0.5, `101`=0.7, `011`=0.4, 
       `111`=.5) # I made this up cause your question miss it 
) 

Et voilà:

plot(x, doWeights=TRUE) 

Venn diagram


Quelques explications supplémentaires.

Les structures de données pour l'emballage vennerable doivent fournir des noms d'ensemble ("a", "b", "c" dans votre cas) et les fréquences/proportions de chaque intersection. Ces noms 0/1 identifient les sous-ensembles: 1 signifie "dans l'ensemble", 0 signifie "pas dans l'ensemble". Ainsi, par exemple:

  • 100 signifie en a, pas b, pas c,
  • 011 signifie pas a, en b, dans c

Ainsi 111 signifie dans les trois ensembles, ce qui manque dans votre matrice et il ne peut pas être ajouté là. Pour vos données d'échantillon quand & b a 0.7 chevauchement et b & c a 0.4 signifie qu'au moins 0.1 est en trois ensemble en même temps (ou j'ai manqué l'interprétation de ces nombres). (Note: Je pense que je surestimé cette 0.5, car il devrait être inférieur à 0,4)

Vous pouvez préparer vos données pour tracer Venn avant de créer la matrice, par exemple:

X <- list(
    a = c("One", "Two", "Three"), 
    b = c("One", "Three", "Four", "Five", "Seven"), 
    c = c("Three", "Five", "Eight", "Nine", "Ten") 
) 

x <- Venn(X) 
x 
# A Venn object on 3 sets named 
# a,b,c 
# 000 100 010 110 001 101 011 111 
# 0 1 2 1 3 0 1 1 
plot(x, doWeights=TRUE) 
+0

Merci pour votre réponse. Pourriez-vous m'expliquer un peu plus comment avez-vous cartographié ma matrice dans votre fonction? et pourquoi avez-vous ajouté un autre 0.5? Où puis-je mettre ce numéro dans ma matrice? Que sont les valeurs 101, 110 ou 100? En outre, mes valeurs sont 0,003,0.0047 etc. Cela va-t-il créer des problèmes? – user751637

+0

@ user751637 J'ajoute quelques explications. Vérifiez qu'il répond à vos doutes. – Marek