2011-01-07 22 views
5

私は次のように、クラブの会員の記録と自分たちの利益を持っている:プロット多次元データ

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

は、1つのメンバーが共有する異なる利害を見ることができるようにPythonでこれらをプロットすることが可能ですか?事前に感謝、Adia

答えて

6

単純なテーブルは、ベン図よりも多くの意味を成しているようだ:

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

自分のマシンに投稿したのとまったく同じコードを試していますが、最初と2番目のFORループのコロンに沿って「構文エラー」メッセージが表示されます。私はここで間違った構文を見ていないので、何が理由だろうか? – Adia

+0

申し訳ありません。私は 'zeros'行に括弧を付けませんでした。編集されました。 –

+0

スティーブ、ありがとう、ありがとう。 – Adia

3

あなたはmatplotlibを見て、それに適したものを提供しているかどうかを見たいかもしれません。

Sage、別の代替。 this exampleも参照してください。

+0

実際に私は私の質問を投稿する前にやりました。彼らの利益に反してメンバーをマッピングするのに適した何かを見つけることができませんでした。 Pythonについての私の限られた知識だと確信しています。 – Adia

+0

私は答えにもう一つの選択肢を加えました。ベンダイアグラムのようなものがあなたのニーズに合うかもしれないと思います。ベン図の場合は –

+1

+1。 –