(十六)Seaborn知識學(xué)習(xí)3-python數(shù)據(jù)分析與機(jī)器學(xué)習(xí)實戰(zhàn)(學(xué)習(xí)筆記)

文章原創(chuàng),最近更新:2018-05-11

1.使用xkcd顏色來命名顏色(離散型色板)
2.連續(xù)色板
3.cubehelix_palette()函數(shù)的連續(xù)調(diào)色板
4.light_palette() 和dark_palette()調(diào)用定制連續(xù)調(diào)色板
課程來源: python數(shù)據(jù)分析與機(jī)器學(xué)習(xí)實戰(zhàn)-唐宇迪

學(xué)習(xí)參考鏈接:
1、Seaborn(sns)官方文檔學(xué)習(xí)筆記(第二章 斑駁陸離的調(diào)色板)
2、Seaborn官方0.8.1版本

1.使用xkcd顏色來命名顏色(離散型色板)

這是seaborn提供非常好用的一種顏色調(diào)用方式.

xkcd包含了一套眾包努力的針對隨機(jī)RGB色的命名。產(chǎn)生了954個可以隨時通過xdcd_rgb字典中調(diào)用的命名顏色。

怎么在實例項目中調(diào)用xkcd顏色呢?

如果熟悉xkcd的命名,就需要將xkcd的命名直接放到plot的參數(shù)中的sns.xkcd_rgb[],以此設(shè)置線條的顏色,并設(shè)置線寬lw的參數(shù),如下:

import seaborn as sns
import matplotlib.pyplot as plt
plt.plot([0,1],[0,1],sns.xkcd_rgb["pale red"],lw=3)
plt.plot([0,1],[0,2],sns.xkcd_rgb["medium green"],lw=3)
plt.plot([0,1],[0,3],sns.xkcd_rgb["denim blue"],lw=3)

輸出結(jié)果如下:


除了從xkcd_rgb字典中提取單一顏色外,還可以將一個顏色名稱的列表傳遞給該xkcd_palette()函數(shù),具體見如下案例:

import seaborn as sns
colors = ["windows blue", "amber", "greyish", "faded green", "dusty purple"]
sns.palplot(sns.xkcd_palette(colors))

輸出結(jié)果如下:


如果想運用xkcd這套顏色,就必須要熟悉xkcd這套顏色的命名,可以上xkcd顏色官網(wǎng)網(wǎng)站查看.

2.連續(xù)色板

色彩隨數(shù)據(jù)變換,比如數(shù)據(jù)越來越重要則顏色越來越深

所以對于連續(xù)的數(shù)據(jù),最好是使用那些在色調(diào)上相對細(xì)微變化的調(diào)色板,同時在亮度和飽和度上有很大的變化。這種方法將自然地吸引數(shù)據(jù)中相對重要的部分.

Color Brewer字典有一大套這些調(diào)色板。它們是以在調(diào)色板中的主導(dǎo)顏色(或顏色)命名的。

代碼如下:

import seaborn as sns
sns.palplot(sns.color_palette("BuGn"))

輸出結(jié)果如下:


就像在matplotlib中一樣,如果您想要翻轉(zhuǎn)漸變,您可以在面板名稱中添加一個_r后綴。

具體案例代碼如下:

import seaborn as sns
sns.palplot(sns.color_palette("BuGn_r"))

輸出結(jié)果如下:



seaborn還增加了一個允許創(chuàng)建沒有動態(tài)范圍的"dark"面板。如果你想按順序畫線或點,這可能是有用的,因為顏色鮮艷的線可能很難區(qū)分。

類似的,這種暗處理的顏色,需要在面板名稱中添加一個_d后綴.

具體案例代碼如下:

import seaborn as sns
sns.palplot(sns.color_palette("BuGn_d"))

輸出結(jié)果如下:


3.cubehelix_palette()函數(shù)的連續(xù)調(diào)色板

cubehelix調(diào)色板系統(tǒng)具有線性增加或降低亮度和色調(diào)變化順序的調(diào)色板。這意味著在你的映射信息會在保存為黑色和白色(為印刷)時或被一個色盲的人瀏覽時可以得以保留。

Matplotlib擁有一個默認(rèn)的內(nèi)置cubehelix版本可供創(chuàng)建:

import seaborn as sns
sns.palplot(sns.color_palette("cubehelix",8))

輸出結(jié)果如下:


seaborn為cubehelix系統(tǒng)添加一個接口使得其可以在各種變化中都保持良好的亮度線性梯度。

通過seaborn的cubehelix_palette()函數(shù)返回的調(diào)色板與matplotlib默認(rèn)值稍有所不同,它不會在色輪周圍旋轉(zhuǎn)或覆蓋更廣的強(qiáng)度范圍。seaborn還改變了排序使得更重要的值顯得更暗:

案例代碼如下:

import seaborn as sns
sns.palplot(sns.cubehelix_palette(8))

輸出結(jié)果如下:


可以用參數(shù)來seaborn.cubehelix_palette控制調(diào)色板的外觀。要改變的兩個參數(shù)是start(0到3之間的一個值)和一個參數(shù)是rot(在-1和1之間任意值)

案例代碼如下:

import seaborn as sns
sns.palplot(sns.cubehelix_palette(8,start=.5,rot=-.75))

輸出結(jié)果如下:



案例代碼如下:

import seaborn as sns
sns.palplot(sns.cubehelix_palette(8,start=.75,rot=-.150))

輸出結(jié)果如下:


4. light_palette() 和dark_palette()調(diào)用定制連續(xù)調(diào)色板

這里還有一個更簡單的連續(xù)調(diào)色板的使用方式,就是調(diào)用light_palette() 和dark_palette(),這與一個單一顏色和種子產(chǎn)生的從亮到暗的飽和度的調(diào)色板。這些函數(shù)還伴有choose_light_palette() and choose_dark_palette()函數(shù),這些函數(shù)啟動了交互式小部件來創(chuàng)建這些調(diào)色板。

綠色連續(xù)調(diào)色板,案例代碼如下:

import seaborn as sns
sns.palplot(sns.light_palette("green"))

輸出結(jié)果如下:


紫色連續(xù)調(diào)色板,案例代碼如下:

import seaborn as sns
sns.palplot(sns.light_palette("purple"))

輸出結(jié)果如下:


這些調(diào)色板的顏色也可以翻轉(zhuǎn)。設(shè)置light_palette()參數(shù) reverse=True即可

翻轉(zhuǎn)后的紫色連續(xù)調(diào)色板,案例代碼如下:

import seaborn as sns
sns.palplot(sns.light_palette("purple",reverse=True))

輸出結(jié)果如下:


翻轉(zhuǎn)后的海軍藍(lán)連續(xù)調(diào)色板,案例代碼如下:

import seaborn as sns
sns.palplot(sns.light_palette("navy",reverse=True))

輸出結(jié)果如下:


它們也可以用來創(chuàng)建顏色映射對象取代顏色列表。

案例代碼如下:

import seaborn as sns
import numpy as np

x, y = np.random.multivariate_normal([0, 0], [[1, -.5], [-.5, 1]], size=300).T
pal = sns.dark_palette("green", as_cmap=True)
sns.kdeplot(x, y, cmap=pal)

輸出結(jié)果如下:


默認(rèn)情況下,任何有效的matplotlib顏色可以傳遞給input參數(shù)。也可以在hls或husl空間中提供默認(rèn)的rgb元組,您還可以使用任何有效的xkcd顏色的種子。

案例代碼如下:

import seaborn as sns
sns.palplot(sns.light_palette((210, 90, 60), input="husl"))

輸出結(jié)果如下:



案例代碼如下:

import seaborn as sns
sns.palplot(sns.dark_palette("muted purple", input="xkcd"))

輸出結(jié)果如下:



需要注意的是,為默認(rèn)的input空間提供交互的組件是husl,這與函數(shù)自身默認(rèn)的并不同,但這在背景下卻是更有用的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容