国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

數據可視化Seaborn從零開始學習教程(二) 顏色調控篇

李義 / 1935人閱讀

摘要:使用分類調色板另外一種對分類數據比較友好的調色板來自工具。它們是以在調色板中的主導顏色或顏色命名的。連續調色板調色板系統在亮度和色變變化上具有線性上升或下降的特點。離散色板調色板中的第三類被稱為離散。

作者:xiaoyu
微信公眾號:Python數據科學
知乎:python數據分析師


Seaborn學習大綱

seaborn的學習內容主要包含以下幾個部分:

風格管理

繪圖風格設置

顏色風格設置

繪圖方法

數據集的分布可視化

分類數據可視化

線性關系可視化

結構網格

數據識別網格繪圖

本次將主要介紹顏色調控的使用。

顏色風格設置

Seaborn的使用中,是可以針對數據類型而選擇合適的顏色,并且使用選擇的顏色進行可視化,節省了大量的可視化的顏色調整工作。

還是一樣,在介紹如何使用顏色外觀設置之前,我們引入所需要的模塊。

%matplotlib inline
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set(rc={"figure.figsize": (6, 6)})
np.random.seed(sum(map(ord, "palettes")))

下面所有操作均在 Jupyter notebook 中執行,如果對這個軟件還不熟悉的朋友可以參考:Jupyter notebook快速入門教程

建立調色板

對于不連續的外觀顏色設置而言,最重要的函數恐怕要屬color_palette了。這個函數擁有許多方法,讓你可以隨心所欲的可以生成各種顏色。并且,它可以被任何有palette參數的函數在內部進行使用(palette的中文意思是 "調色板")。

關于這個函數有幾個點需要知道一下:

color_palette函數可以接受任何seaborn或者matplotlib顏色表中顏色名稱(除了jet),也可以接受任何有效的matplotlib形式的顏色列表(比如RGB元組,hex顏色代碼,或者HTML顏色名稱)。

這個函數的返回值總是一個由RGB元組組成的列表,無參數調用color_palette函數則會返回當前默認的色環的列表。

還有一個相應的函數,是set_palette,它接受與color_palette一樣的參數,并會對所有的繪圖的默認色環進行設置。當然,你也可以在with語句中使用color_palette來臨時的改變默認顏色。

通常,在不知道數據特點的情況下,要找出并知道哪組顏色對一組數據是最好的有點不太現實。因此,我們將分為多種方式來使用color_palette函數和其它的 seaborn paletee 函數。

有三種通用的color palette可以使用,它們分別是:qualitativesequentialdiverging

1. 分類色板(quanlitative)

Qualitative調色板,也可以說成是 類型 調色板,因為它對于分類數據的顯示很有幫助。當你想要區別 不連續的且內在沒有順序關系的 數據時,這個方式是最好的。

當導入seaborn時,默認的色環就被改變成一組包含6種顏色的調色板,它使用了標準的matplolib色環,為了讓繪圖變得更好看一些。

current_palette = sns.color_palette()
sns.palplot(current_palette)

有6種不同的默認主題,它們分別是:deepmutedpastelbirghtdarkcolorblind

themes = ["deep", "muted", "pastel", "bright", "dark", "colorblind"]
for theme in themes:
    current_palette = sns.color_palette(theme)
    sns.palplot(current_palette)

使用色圈系統

默認的6種顏色看上去真不錯,但是如果我們想要超過6種顏色呢?

當你有超過6種類型的數據要區分時,最簡單的方法就是 在一個色圈空間內使用均勻分布的顏色。這也是當需要使用更多顏色時大多數seaborn函數的默認方式。

最常用的方法就是使用 hls 色空間,它是一種簡單的RGB值的轉換。

sns.palplot(sns.color_palette("hls", 8))

除此之外,還有一個 hls_palette 函數,它可以讓你控制 hls 顏色的亮度和飽和度。

sns.palplot(sns.hls_palette(8, l=.3, s=.8))

然而,由于人類視覺系統工作的原因,根據RGB顏色產生的平均視覺強度的顏色,從視覺上看起來并不是相同的強度。如果你觀察仔細,就會察覺到,黃色和綠色會更亮一些,而藍色則相對暗一些。因此,如果你想用hls系統達到一致性的效果,就會出現上面的問題。

為了修補這個問題,seabornhls系統提供了一個接口,可以讓操作者簡單容易的選擇均勻分布,且亮度和飽和度看上去明顯一致的色調。

sns.palplot(sns.color_palette("husl", 8))

同樣與之對應的,也有個husl_palette函數提供更靈活的操作。

使用分類Color Brewer調色板

另外一種對分類數據比較友好的調色板來自Color Brewer工具。在matplotlib中也存在這些顏色表,但是它們并沒有被合適的處理。在seaborn中,當你想要分類的 Color Brewer 調色板的時候,你總是可以得到不連續顏色,但是這也意味著在某一點上,這些顏色將會開始循環。

Color Brewer 網站中的一個很好的特點就是它提供了一個色盲安全指導。色盲顏色有很多種http://en.wikipedia.org/wiki/Color_blindness,但是最常見的當屬辨別綠色和紅色。如果可以避免使用紅色和綠色來對繪圖元素上色,那么對于一些色盲人群將會是一個很好的消息。

下面兩組顏色就是使用紅色和綠色組合,這可能并不是最好的選擇。

sns.palplot(sns.color_palette("Paired"))

sns.palplot(sns.color_palette("Set2", 10))

為了避免這些組合,我們需要從Color Brewer庫中進行選擇調色,有一個專門的 choose_colorbrewer_palette 函數可以實現這個功能。這個函數需要在 IPython notebook 中使用,因為 notebook 是一個交互式的工具,可以讓你瀏覽各種選擇并且調節參數。

sns_tpye = ["qualitative", "sequential", "diverging"]
for elem in sns_type:
    sns.choose_colorbrewer_palette(elem)

n:調節顏色的個數;

desat:調節明暗和飽和度;

當然,您可能只想使用一組您特別喜歡的顏色。因為color_palette()接受一個顏色列表,這很容易做到。

flatui = ["#9b59b6", "#3498db", "#95a5a6", "#e74c3c", "#34495e", "#2ecc71"]
sns.palplot(sns.color_palette(flatui))

使用xkcd顏色來命名顏色

在眾多的努力幫助下,xkcd 完成了隨機的 RGB 顏色的命名。一共生成了954個顏色http://xkcd.com/color/rgb/,并可可以隨時通過xkcd_rgb字典調用。

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);

如果想要從 xkcd_rgb 字典中多帶帶的抽取出一些顏色,你也可以將一組選擇好的顏色放到 xkcd_palette 函數中。

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

2. 連續色板(sequential)

調色板的第二大類被成為 "順序",這種調色板對于有從低(無意義)到高(有意義)范圍過度的數據非常適合。盡管有些時候你可能想要在連續色板中使用不連續顏色,但是更通用的情況下是連續色板會作為顏色表在 kdeplot() 或者 corrplot() 或是一些 matplotlib 的函數中使用。

對于連續的數據,最好是使用那些在色調上有相對細微變化的調色板,同時在亮度和飽和度上有很大的變化。這種方法將自然地將數據中相對重要的部分成為關注點。

Color Brewer 的字典中就有一組很好的調色板。它們是以在調色板中的主導顏色(或顏色)命名的。

sns.palplot(sns.color_palette("Blues"))

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

sns.palplot(sns.color_palette("BuGn_r"))

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

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

sns.palplot(sns.color_palette("GnBu_d"))

注意,你可能想使用 choose_colorbrewer_palette() 函數取繪制各種不同的選項。如果你想返回一個變量當做顏色映射傳入seaborn或matplotlib的函數中,可以設置 as_cmap 參數為True

“cubehelix”連續調色板

cubehelix調色板系統在亮度和色變變化上具有線性上升或下降的特點。這意味著,當顏色表中的信息被轉化為黑色和白色或者被一個色盲者看到的時候,它將會被保存下來。

matplotlib 有內建的默認cubehelix 版本:

sns.palplot(sns.color_palette("cubehelix", 8))

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

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

sns.palplot(sns.cubehelix_palette(8))

其他cubehelix_palette()的參數主要調整色板的視覺。兩個重要的選擇是:start(值的范圍為03)和rot,或者旋轉的次數(-1和1之間)

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

你也可以控制斷點的亮度和甚至對調結果順序:

sns.palplot(sns.cubehelix_palette(8, start=2, rot=0, dark=0, light=.95, reverse=True))

默認情況下你只會得到一些像seaborn其它調色板一樣的顏色列表,但你也可以通過使用as_cmap=True讓調色板返回一個可以被傳入seaborn或matplotlib函數的顏色映射對象。

x, y = np.random.multivariate_normal([0, 0], [[1, -.5], [-.5, 1]], size=300).T
cmap = sns.cubehelix_palette(light=1, as_cmap=True)
sns.kdeplot(x, y, cmap=cmap, shade=True);

與前面一樣,也可以在notebook中使用choose_cubehelix_palette()來調節參數幫助選擇更適合的調色板或顏色映射。如果想讓函數返回一個類似hexbin的顏色映射而非一個列表則需要傳入as_cmap=True

定制的連續調色板

對于一個更簡單的接口定制連續色板,你可以使用light_palette() 或者 dark_palette()函數。它們都是單一顏色,并且能產生從亮值或者暗去飽和的值到這個顏色的調色板。伴隨著這些函數,也同樣有 choose_light_palettechoose_dark_palette 兩個函數來交互式的調節創建調色板。

sns.palplot(sns.light_palette("green"))

sns.palplot(sns.dark_palette("purple"))

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

它們也可以創建一個顏色映射對象,而不僅僅是顏色列表。

pal = sns.dark_palette("palegreen", as_cmap=True)
sns.kdeplot(x, y, cmap=pal);

默認情況下,任何有效的matplotlib顏色可以作為輸入。另外輔助的解釋可以由input參數來控制。目前你可以在hls或husl空間中提供默認的rgb元組,您還可以使用任何有效的xkcd顏色的種子。

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

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

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

3. 離散色板

調色板中的第三類被稱為“離散”。這類色板適用于數據特征含有大的低值和大的高值。數據中通常有一個意義明確的中點。例如,如果你想要從某個基線時間點繪制溫度變化,最好使用離散的顏色表顯示相對降低和相對增加面積的地區。

除了你想滿足一個低強度顏色的中點以及用不同起始顏色的兩個相對微妙的變化,其實選擇離散色板的規則類似于順序色板。同樣重要的是,起始值的亮度和飽和度是相同的。

同樣重要的是要強調,應該避免使用紅色和綠色,因為大量的潛在觀眾將無法分辨它們。

同樣,Color Brewer顏色字典里也同時擁有一套精心挑選的離散顏色映射:

sns.palplot(sns.color_palette("BrBG", 7))

sns.palplot(sns.color_palette("RdBu_r", 7))

sns.palplot(sns.color_palette("coolwarm", 7))

定制的離散色板

你也可以使用seaborn函數 diverging_palette() 為離散的數據創建一個定制的顏色映射。(當然也有一個類似配套的互動工具:choose_diverging_palette())。該函數使用husl顏色系統的離散色板。你需要傳遞兩種色調,并可選擇性的設定明度和飽和度的端點。函數將使用husl的端點值及由此產生的中間值進行均衡。

sns.palplot(sns.diverging_palette(220, 20, n=7))

sns.palplot(sns.diverging_palette(145, 280, s=85, l=25, n=7))


sep參數控制面板中間區域的兩個漸變的寬度。

sns.palplot(sns.diverging_palette(10, 220, sep=80, n=7))

也可以用中間的色調來選擇調色,而不是用亮度。

sns.palplot(sns.diverging_palette(255, 133, l=60, n=7, center="dark"))

設置默認的調色板

color_palette() 函數有一個名為set_palette()的配套使用函數。 set_palette()。set_palette()接受與color_palette()相同的參數,但是它會更改默認的matplotlib參數,以便成為所有的調色板配置。

def sinplot(flip=1):
    x = np.linspace(0, 14, 100)
    for i in range(1, 7):
        plt.plot(x, np.sin(x + i * .5) * (7 - i) * flip)
sns.set_palette("husl")
sinplot()

color_palette()函數也可以在一個with塊中使用,以達到臨時更改調色板的目的。

with sns.color_palette("PuBuGn_d"):
    sinplot()

總結

本篇介紹了seaborn中的顏色調控方法,提到的一個重要函數是:color_palette()。針對不同的數據類型有三種調色方式:

分類色板(qualitative)

連續色板(sequential)

離散色板(diverging)

其中還提到了 Color Brewer 工具,它可以很好的應用在以上三種調色方式上。

記住還有一個很有用的函數 choose_xxx_paletee(),用于交互式的調試顏色。

還可以通過 set_palette() 函數設置繪圖默認參數。

參考:http://seaborn.pydata.org/tut...

關注微信公眾號Python數據科學,獲取 120G 人工智能 學習資料。


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41750.html

相關文章

  • 數據視化Seaborn從零開始學習教程(四) 分類數據視化

    摘要:分類數據散點圖在分類數據的基礎上展示定量數據的最簡單函數就是。此外,小提琴內還顯示了箱體四分位數和四分位距。該函數會用高度估計值對數據進行描述,而不是顯示一個完整的條形,它只繪制點估計和置信區間。 作者:xiaoyu微信公眾號:Python數據科學知乎:python數據分析師 Seaborn學習大綱 seaborn的學習內容主要包含以下幾個部分: 風格管理 繪圖風格設置 顏色風...

    CodeSheep 評論0 收藏0
  • 數據視化Seaborn從零開始學習教程(三) 數據分布視化

    摘要:數據集分布可視化當處理一個數據集的時候,我們經常會想要先看看特征變量是如何分布的。直方圖在橫坐標的數據值范圍內均等分的形成一定數量的數據段,并在每個數據段內用矩形條顯示軸觀察數量的方式,完成了對的數據分布的可視化展示。 作者:xiaoyu微信公眾號:Python數據科學知乎:python數據分析師 Seaborn學習大綱 seaborn的學習內容主要包含以下幾個部分: 風格管理 ...

    Tamic 評論0 收藏0
  • 數據視化Seaborn從零開始學習教程(一) 風格選擇

    摘要:簡介同一樣,也是進行數據可視化分析的重要第三方包。的五種繪圖風格有五種的風格,它們分別是。 作者:xiaoyu微信公眾號:Python數據科學知乎:python數據分析師 最近在做幾個項目的數據分析,每次用到seaborn進行可視化繪圖的時候總是忘記具體操作。雖然seaborn的官方網站已經詳細的介紹了使用方法,但是畢竟是英文,而且查找不是很方便。因此博主想從零開始將seaborn學...

    testbird 評論0 收藏0
  • 【精華分享】:轉行數據分析的一份學習清單

    摘要:數據分析的發展方向一般有商業方向,行業分析業務方向,和機器學習數據挖掘方向。機器學習的書籍推薦統計學習方法,機器學習,機器學習實戰三本書。 作者:xiaoyu 微信公眾號:Python數據科學 知乎:python數據分析師 上一篇主要分享了博主親身轉行數據分析的經歷: 【從零學起到成功轉行數據分析,我是怎么做的?】 本篇繼上一篇將分享轉行數據分析的一些經驗和學習方法,看完這篇你將會解...

    suemi 評論0 收藏0

發表評論

0條評論

李義

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<