2015-02-10 13 views
16

Dağılım grafiğinde nasıl ayçiçeği renkleri elde edebilirim?matplotlib dağılımı ile renkler arasında seaborn döngüsü

import matplotlib.pyplot as plt 
import seaborn as sns 
ax=fig.add_subplot(111) 
for f in files: 
    ax.scatter(args) # all datasets end up same colour 
    #plt.plot(args) # cycles through palette correctly 
+0

Bu 'özelliği' değil, bir 'hata' 'scatter' Sizin daha (bir renk haritası ile birlikte) kullanılacak her işaretleyici bir skaler değer atayabilirsiniz anlamına gelen bir' ScalarMappable' olduğunu Her işaretleyiciyi skaler değere göre renklendirin. Renk döngüsü mantığına 'scatter' katılması göz önüne alındığında aptalca/aptalca görünüyor. Bir yan not olarak, işaretleyicilerin büyüklüğünü değiştirmedikçe, hiçbir satır içermeyen 'arsa' kullanmak daha iyidir (daha hızlı gidecektir). – tacaswell

+0

Arsa ile ilgili ipucu için teşekkürler :) Bir hata olduğunu iddia etmiyordum, sadece nasıl yapılacağını soruyordum. – amn41

cevap

30

Matplotlib'e hangi rengi kullanacağını söylemelisiniz. örneğin, Kullanılır, Seaborn varsayılan renk paleti:

import matplotlib.pyplot as plt 
import seaborn as sns 
import itertools 
ax=fig.add_subplot(111) 

palette = itertools.cycle(sns.color_palette()) 

for f in files: 
    ax.scatter(args, color=next(palette)) 

itertools.cycle emin biz renklerin tükendi ve sonuncusu kullandıktan sonra tekrar ilkinden başlamayın yapar.

0

Carsten'ın yanıtını oluşturmak için, renkleri atamak için çok sayıda kategoriniz varsa, renkleri çok büyük bir deniz kabuğu paletine sıkıştırmak isteyebilirsiniz, örneğin xkcd_palette veya crayon_palette. Genellikle a chartjunk anti-pattern: 5-6'dan fazla renk kullanmak genellikle aşırı hızlıdır ve grafik türünü değiştirmeyi düşünmeniz gerekebilir.

import matplotlib.pyplot as plt 
import seaborn as sns 

palette = zip(df['category'].unique(), sns.crayons.values())