2012-04-26 29 views
20

これは私の最初のmatplotlibプログラムです。私の無知には申し訳ありません。matplotlibの散布図

私は2つの文字列の配列を持っています。例えばA = ['test1','test2']B = ['test3','test4']となります。 AB要素の間に相関がある場合、そのcorr値は1に設定されます。今

 test1 | test2 
test3 | 1 | 0 

test4 | 0 | 1 

、私は私のX軸はAの要素になります散布図を描きたい、Y軸はBの要素となり、相関値が1であれば、それは散乱プロットでマークされます。どうやってするか?

+5

[何を試しましたか](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+1

私はあなたの質問に答えましたが、それを理解しているか分からない。 AとBの要素は本当に文字列ですか?どのように文字列の相関のテスト?数値であれば、相関の尺度が1つだけ得られます。あなたの例から、それは 'test1'と 'test2'のリストのようです。しかし、それは正確にあなたが散布図が欲しいのは私には分かりません。それが役に立つのであれば私の答えを残しておきますが、明確にすれば助けになります。 – Akavall

+0

こんにちは、AとBの要素は実際には2つのファイル名を表す文字列です。いくつかのロジックに基づいて別のプログラムから相関値を生成しました。 – bray

答えて

68

たぶん、このような何か:

import matplotlib.pyplot 
import pylab 

x = [1,2,3,4] 
y = [3,4,8,6] 

matplotlib.pyplot.scatter(x,y) 

matplotlib.pyplot.show() 

EDIT:

私が正しくあなたを理解していれば、私は見てみましょう:

あなたが持っている:

 test1 | test2 | test3 
test3 | 1 | 0 | 1 

test4 | 0 | 1 | 0 

test5 | 1 | 1 | 0 

今、あなたがしたいです1の値が1つのドットで表されるように散布図で上記の値を表します。

のは、あなたの結果は、2-Dのリストに格納されているとしましょう:

results = [[1, 0, 1], [0, 1, 0], [1, 1, 0]] 

は、我々はそれらをプロットすることができますように、2つの変数にそれらを変換したいです。

そして、私は、このコードは、あなたが探しているものをあなたを与えるだろうと考えている:私はpylabをインポートする必要がない、とあなたが軸ラベルで遊んを持っているでしょう

import matplotlib 
import pylab 


results = [[1, 0, 1], [0, 1, 0], [1, 1, 0]] 

x = [] 
y = [] 

for ind_1, sublist in enumerate(results): 
    for ind_2, ele in enumerate(sublist): 
     if ele == 1: 
      x.append(ind_1) 
      y.append(ind_2)  


matplotlib.pyplot.scatter(x,y) 

matplotlib.pyplot.show() 

注意してください。また、これは回避策のように感じ、これを行う直接的な方法があるかもしれません(おそらく)。