2011-01-07 22 views
5

que tienen registros de los miembros de un club y sus intereses, como en el siguiente:gráfico de datos multidimensionales

Member A: Football, Swimming 
Member B: Swimming, Jooga, Jogging 
Member C: Cycling, Football 
Member D: Football, Tennis, Cycling 

¿Es posible trazar estos en Python de manera que se pueden ver los diferentes intereses de los miembros comparten? Gracias de antemano, Adia

Respuesta

6

Una tabla simple parece tener más sentido que un diagrama de Venn:

import scipy, pylab 
names = ['Alice', 'Bob', 'Carol', 'David'] 
interests = [['Football', 'Swimming'], ['Swimming', 'Jooga', 'Jogging'], 
      ['Cycling', 'Football'], ['Football', 'Tennis', 'Cycling']] 
allinterests = list(set(reduce(lambda x,y:x+y, interests))) 
X = scipy.zeros((len(interests), len(allinterests))) 
for i, indinterests in enumerate(interests): 
    for x in indinterests: 
     X[i, allinterests.index(x)] = 1 
pylab.matshow(X, interpolation='nearest', cmap=pylab.cm.gray_r) 
pylab.show() 
pylab.yticks(range(len(names)), names) 
pylab.ylim([len(names)-0.5, -0.5]) 
pylab.xticks(range(len(allinterests)), allinterests) 
pylab.savefig('interests.png') 

alt text

+0

Estoy intentando exactamente el mismo código que ha publicado en mi máquina, pero da un mensaje de "error de sintaxis" a lo largo de los dos puntos en el primer y segundo bucle FOR. No veo ninguna sintaxis incorrecta aquí, ¿cuál podría ser el motivo? – Adia

+0

Lo siento. Dejé un paréntesis en la línea 'zeros'. Editado –

+0

muchas gracias Steve, eso fue todo. – Adia

3

Es posible que desee echar un vistazo a matplotlib y ver si ofrece algo adecuado para eso.

Sage, otra alternativa. Vea también this example.

+0

En realidad lo hice antes de publicar mi pregunta. No pude encontrar algo que pudiera ajustarse para mapear a los miembros en contra de sus intereses. Estoy seguro de que lo hay, es solo mi conocimiento limitado sobre Python. – Adia

+0

Bien. Agregué otra alternativa a la respuesta. Supongo que algo así como un diagrama de Venn podría satisfacer sus necesidades. –

+1

+1 para el diagrama de Venn. –

Cuestiones relacionadas