2010-06-10 22 views
11

Her birinin ayrı bir renkle çizilmesi gereken bir dizi satır var. Her bir hat aslında birkaç veri kümesinden (pozitif, negatif bölgeler vb.) Oluşur ve böylece bir spektrumda bir renkte beslenen bir jeneratör oluşturabilirim, örneğin gist_rainbow haritası shown here.Matplotlib'de verilen colormap'ten bir renk üreteci oluşturun

o gist_rainbow haritadaki renklerin aralığını kapsamaz, Ayrıca,

from pylab import * 

NUM_COLORS = 22 

mp = cm.datad['gist_rainbow'] 
get_color = matplotlib.colors.LinearSegmentedColormap.from_list(mp, colors=['r', 'b'], N=NUM_COLORS) 
... 
# Then in a for loop 
    this_color = get_color(float(i)/NUM_COLORS) 

aşağıdaki eserlerini bulduk ama çok karmaşık ve daha da önemlisi zor hatırlamak görünüyor, bir harita yeniden tanımlamak zorunda .

Belki de bir jeneratör bunu yapmanın en iyi yolu değil, eğer öyleyse kabul edilen yol nedir? Belirli bir renk haritası gelen endeks renkleri için

cevap

18

kullanabilirsiniz:

import pylab 
NUM_COLORS = 22 

cm = pylab.get_cmap('gist_rainbow') 
for i in range(NUM_COLORS): 
    color = cm(1.*i/NUM_COLORS) # color will now be an RGBA tuple 

# or if you really want a generator: 
cgen = (cm(1.*i/NUM_COLORS) for i in range(NUM_COLORS)) 
+0

: Merhaba, ben tamsayı değerleri (boş olması örnek hücreleri için var benim program.I bu nasıl kullanabileceğinizi size sormak istedim = 0, full = 1 ..) .Bunu yapabilirim "boş" rengine karşılık gelen 'kırmızı', renkli beyaza tam vb. Ben çizim yapmam gereken bir fonksiyon var ".... im = plt.imshow (mydata, cmap = plt.get_cmap ('gist_earth')) .Yukarıdakileri nasıl uygulamalıyım? (eğer aynı şeyi söylersek). Teşekkürler! – George

+0

@George: Açıkladığınız gibi, bunun sizin için neden çalışmadığından emin değilim. Belki küçük bir örnekle tam bir soru gönderin. – tom10

+0

: Eğer grafiği oluşturduğum http://stackoverflow.com/questions/8929456/how-to-create-a-movie-in-relation-to-matlab (güncelleştirilmiş kısımda) buradan kontrol edebilirsiniz. Örneğini uyguluyorum (eğer ısrar edersen yeni bir cevap gönderirim) Teşekkürler! – George