2015-02-10 89 views
16

如何在散點圖上獲得seaborn顏色?通過matplotlib分散顏色的seaborn循環散點圖

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

這是一個「功能」,而不是一個「錯誤」'scatter'是一個'ScalarMappable'這意味着可以分配一個標量值,這將不是被用於(與彩色地圖一起),每個標記根據標量值爲每個標記着色。鑑於此,具有'散佈'參與顏色循環邏輯看起來很愚蠢/太過分。作爲一個側面說明,除非你改變了標記的大小,否則最好在沒有行的情況下使用'plot'(它會更快)。 – tacaswell 2015-02-11 04:58:06

+0

感謝關於使用情節的提示:)我並不是說這是一個錯誤,只是問如何去做。 – amn41 2015-02-11 11:48:38

回答

30

你必須告訴matplotlib使用哪種顏色。使用,例如,seaborn默認的調色板:

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確保我們不會跑出來的顏色,並使用最後一個後再次以第一個開始。

0

要建立在Carsten的答案上,如果您有大量類別分配顏色,您可能希望將顏色壓縮到非常大的seaborn調色板,例如xkcd_palettecrayon_palette。請注意,此練習是通常是a chartjunk anti-pattern:使用超過5-6種顏色通常是矯枉過正的,您可能需要考慮更改圖表類型。

import matplotlib.pyplot as plt 
import seaborn as sns 

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