2012-04-26 23 views
20

Bu benim ilk matplotlib programım, cehaletim için çok üzgünüm.scatter arsa

İki dizim dizilim var. A = ['test1','test2'] ve B = ['test3','test4']. A ve B öğeleri arasında herhangi bir korelasyon varsa, bunların düzeltme değerleri 1 olarak ayarlanacaktır.

 test1 | test2 
test3 | 1 | 0 

test4 | 0 | 1 

Şimdi, benim X ekseni A elemanları olacak bir dağılım diyagramı çizmek istiyorum, Y ekseni B elemanları olacak ve korelasyon değeri 1 ise, bu dağınık arsa içinde işaretlenir. bu nasıl yapılır?

+5

[ne denediniz?] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+1

Sorunuzu cevapladım, sonra tekrar oku ve Bunu anladığından emin değilim. A ve B unsurları gerçekten dizeler mi? Dizelerin korelasyonu nasıl test edilir? Eğer sayısal değerler ise, o zaman sadece bir ölçü korelasyonu elde edeceksiniz. Örneğinizden, 'test1' ve 'test2' listeleri görünüyor. Ama o zaman tam olarak, dağılım taslağını tam olarak istediğin şey net değil. Faydalı olduğu halde cevabımı yine de bırakacağım, ancak açıklığa kavuşursanız yardımcı olur. – Akavall

+0

Merhaba, A ve B öğelerinin elemanları aslında iki dosya adını temsil eden dizelerdir. Bir mantık temelinde başka bir programdan korelasyon değerleri ürettim. – bray

cevap

68
böyle

Belki bir şey:

import matplotlib.pyplot 
import pylab 

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

matplotlib.pyplot.scatter(x,y) 

matplotlib.pyplot.show() 

DÜZENLEME:

Sen var:

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

test4 | 0 | 1 | 0 

test5 | 1 | 1 | 0 

Artık istediğiniz

Şimdi doğru anlamak bakayım Bir dağılım grafiğinde yukarıdaki değerleri temsil eder, böylece 1 değeri bir nokta ile temsil edilir.

Diyelim ki sonuç bir 2-B listesinde saklanır diyelim:

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

Biz bunları çizmek edebiliyoruz böylece iki değişken dönüştürüp istiyorum.

Ve bu kod aradığınız şeyi vereceğim inanıyoruz: Ben pylab ithal etmek gerekiyor ve eksen etiketleri ile etrafında oyun olurdu

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

dikkat edin. Ayrıca bu, etrafta bir çalışma gibi hissettirir ve muhtemelen bunu yapmak için doğrudan bir yöntem olabilir.