2012-04-26 271 views
20

這是我的第一個matplotlib程序,很抱歉我的無知。我有兩個字符串數組。例如,A = ['test1','test2']B = ['test3','test4']。 如果AB元素之間存在任何關聯,則它們的corr值將設置爲1matplotlib散點圖

 test1 | test2 
test3 | 1 | 0 

test4 | 0 | 1 

現在,我要畫一個散點圖在我的X軸將是A元素,Y軸將是B元素,如果相關值是1,它會在散積標記。怎麼做?

+5

[你有什麼試過嗎?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-04-26 15:38:11

+1

我已經回答了你的問題,但後來再讀一遍,我不確定是否理解它。 A和B的元素是否真的是字符串?如何測試字符串的相關性?如果它們是數值,那麼你只會得到一個相關性度量。從你的例子看來,'test1'和'test2'列表。但是,我不清楚你到底想要散佈什麼。如果有用,我仍會留下我的回答,但如果您澄清,這將有所幫助。 – Akavall 2012-04-26 15:53:09

+0

嗨,A和B的元素是字符串,它們實際上代表了兩個文件名。我基於某種邏輯從另一個程序生成相關值。 – bray 2012-04-26 16:01:25

回答

68

也許是這樣的:

import matplotlib.pyplot 
import pylab 

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

matplotlib.pyplot.scatter(x,y) 

matplotlib.pyplot.show() 

編輯:

讓我看看,如果我理解正確,現在:

您有:

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

test4 | 0 | 1 | 0 

test5 | 1 | 1 | 0 

現在要用散點圖表示上述值,使得1的值由點表示。

比方說,你的結果存儲在一個2-d列表:

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

我們希望把它們轉化爲兩個變量,所以我們能夠繪製出來。

我相信這段代碼會給你你在找什麼:

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() 

請注意,我確實需要進口pylab,你將圍繞有發揮與軸標籤。此外,這感覺就像一個工作,並可能(可能是)一個直接的方法來做到這一點。