2012-04-26 222 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,你将围绕有发挥与轴标签。此外,这感觉就像一个工作,并可能(可能是)一个直接的方法来做到这一点。