2016-04-07 61 views
2

如何獲取來自sns.color_palette()函數的調色板的cmap版本?在獲取彩色啤酒調色板的cmap

sns.color_palette('Blues') 

sns.color_palette('Blues', as_cmap=True) 

結果:例如,我可以要求顏色調色板啤酒這樣的 「類型錯誤:color_palette()得到了一個意想不到的關鍵字參數 'as_cmap'」。

我當然可以使用sns.choose_colorbrewer_palette(),它接受​​參數,但它只能在交互模式下工作(我不能要求它在python腳本中爲'Blues')。

+0

你需要什麼? – mwaskom

+0

那麼,我不需要許多matplotlib函數的cmap嗎?像'plot_surface'或'contour'等? – max

回答

3

如果您想在matplotlib/seaborn函數中使用顏色映射,只需傳遞名稱(例如,plt.pcolormesh(..., cmap="Blues")),matplotlib將知道該做什麼。

如果因爲某種原因需要colormap對象,它將存在於matplotlib.cm命名空間中。

1

只是想添加一些令我困惑的東西。

對於支持它,如果你設置as_cmap=True調色板,seaborn創建256個色調色板,然後要求mpl.ListedColorMap作出mpl.ColorMap(這將僅僅是相鄰色之間的插值,治療他們,如果他們分手[0, 1]間隔分成相等部分)。在這種情況下,seaborn不使用n_colors自變量,因爲mpl.ColorMap表示從[0,1]到顏色的函數,而更多顏色用於創建此函數,因此函數更精確。 (假定大多數應用程序不需要超過256種顏色)

因此,通過生成調色板的256種顏色(假設調色板當然是在算法上生成的,所以它生成的話,可以將調色板轉換爲mpl.ColorMap)許多不同的顏色),然後致電mpl.ListedColorMap。當然,正如@mwaskom指出的,人們可以簡單地使用mpl.cm命名空間中的mpl.ColorMap對象。