Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Plot multidimensional data

I have records of members in a club and their interests, as in the following:

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

Is it possible to plot these in Python so that one can see the different interests members share? Thanks in advance, Adia

like image 356
Adia Avatar asked Jan 07 '11 12:01

Adia


1 Answers

A simple table seems to make more sense than a Venn diagram:

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

like image 150
Steve Tjoa Avatar answered Oct 06 '22 15:10

Steve Tjoa