2016-04-12 13 views
3

Birkaç benzer soru gördüm ama hiçbiri kesin olmayan soruları cevaplamadı, bu yüzden çiftleri işaretlemeden önce lütfen onunla geçin.Matplotlib grafiğinde yeni bir renk nasıl eklenir (veya colormaps kullanır)?

Grafik üzerinde n çizgilerini çizmek zorundayım. n standart değeri 10'dur, ancak değişebilir. Önceden, benim için iyi olan

ax.set_color_cycle([plt.cm.Accent(i) for i in np.linspace(0, 1, limit)]) 

. Ancak

, bu yöntem geç itibarıyla amortismana tabi ve aynı set_prop_cycle

kullanmak için benim program bir kullanır I benim ihtiyaçlarına uygun dokümantasyon http://matplotlib.org/api/axes_api.html herhangi bir örnek bulmak mümkün değildi bir uyarı verir etmiştir test için vb aksanı ya da sıcak veya soğuk gibi renk çubuğu

Güncelleme

örnek kod:

import matplotlib.pyplot as plt 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(111) 
limit=10 
ax.set_color_cycle([plt.cm.Accent(i) for i in np.linspace(0, 1, limit)]) 
for limit in range(1,limit+1): 
     x=np.random.randint(10, size=10) 
     y=limit*x 
     plt.plot(x,y,lw=2, label=limit) 
     plt.legend(loc='best') 

bu benim gösterir Ne: enter image description here

soru Bir renk veya tür tonları arasında seçilmek için renk haritası kullanabilirsiniz nasıl? http://matplotlib.org/users/colormaps.html

+0

Yani sadece n 'eşit örneklerinde 'renk çubuğunu bölünmüş ve için bu renkleri kullanmak istiyorum senin arsan mı? Çalışabileceğimiz bir örnek oluşturabilir misin? – Chiel

+0

@Chiel Çalıştırmak için bir örnek oluşturdum ve bir örnek ekledim – CoderBC

+0

Tanımdan önce satırda kullandığınız gibi 'limit' daha önce tanımlamanız gerekiyor. – Chiel

cevap

1

Daha genel set_prop_cycle'u kullanmak için biraz farklı bir formülasyona ihtiyacınız vardır. Sen plt.cycler ile argüman 'color' için cycler oluşturmak zorunda ve yaptığımız gibi önce geri kalanı için tam olarak bunu:

import matplotlib.pyplot as plt 
import numpy as np 

limit=10 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.set_prop_cycle(plt.cycler('color', plt.cm.Accent(np.linspace(0, 1, limit)))) 
for limit in range(1,limit+1): 
    x=np.random.randint(10, size=10) 
    y=limit*x 
    plt.plot(x,y,lw=2, label=limit) 
    plt.legend(loc='best') 
+0

Cevabınız için teşekkürler! – CoderBC

+0

"set_prop_cycle" öğesindeki döngü gerekli değil, bu: 'plt.cm.Accent (np.linspace (0, 1, limit))' ile aynı sonucu verir [plt.cm.Accent (i) np.linspace içinde (0, 1, limit)] ' – Bart

+0

@Bart Siz haklısınız. Bunun mümkün olduğunu bilmiyordum. Yorumunuzu ekledim. – Chiel

İlgili konular