seaborn教程1——風格選擇

 

原文連接:https://segmentfault.com/a/1190000014915873segmentfault

Seaborn學習大綱

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

  1. 風格管理函數

    • 繪圖風格設置
    • 顏色風格設置
  2. 繪圖方法工具

    • 數據集的分佈可視化
    • 分類數據可視化
    • 線性關係可視化
  3. 結構網格post

    • 數據識別網格繪圖

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

0、seaborn介紹:

  Seaborn實際上是在matplotlib的基礎上進行了更高級的API封裝,從而使得做圖更加容易,在大多數狀況下使用seaborn就能作出很具備吸引力的圖,而使用matplotlib就能製做具備更多特點的圖。應該把Seaborn視爲matplotlib的補充,而不是替代物。字體

安裝方法:spa

1 pip install seaborn

一、管理圖表的藝術

  畫一個吸引人注意的圖表至關重要。當你探索一個數據集,須要畫圖表,圖表看起來使人愉悅是件很高興的事。在與你的觀衆交流觀點時,可視化一樣重要,同時,也頗有必要去讓圖表吸引注意力和印入腦海裏。Matplotlib自動化程度很是高,可是,掌握如何設置系統以便得到一個吸引人的圖是至關困難的事。爲了控制matplotlib圖表的外觀,Seaborn模塊自帶許多定製的主題和高級的接口。3d

1.1 讓咱們定義一個簡單的函數來繪製一些偏移正弦波,這將幫助咱們看到能夠調整的不一樣樣式參數。使用matplotlib默認值時的圖:

1.2 轉換成Seaborn模塊,再次繪圖

#轉換成Seaborn模塊,只須要引入seaborn模塊。
import seaborn as sns
sns.set()#切換到seaborn默認值
sinplot()code

 

 

 seaborn默認淺灰色背景與白色網絡線的靈感來源於matplotlib,卻比matplotlib的顏色更多柔和。咱們發現,網絡線對於傳播信息頗有用,幾乎在全部狀況下,人們喜歡圖甚於表。默認狀況下白灰網格的形式能夠避免過於刺眼。在多面做圖的狀況下,網絡形式顯得至關的有利,提供了一種做圖結構,這對模塊中的一些複雜工具很是重要。

二、seaborn的兩類函數

Seaborn 將 matplotlib 的參數劃分爲兩個獨立的組合。第一組是設置繪圖的外觀風格的,第二組主要將繪圖的各類元素按比例縮放的,以致能夠嵌入到不一樣的背景環境中。

操控這些參數的接口主要有兩對方法:

  • 控制風格:axes_style()set_style()
  • 縮放繪圖:plotting_context()set_context()

每對方法中的第一個方法(axes_style()plotting_context())會返回一組字典參數,而第二個方法(set_style()set_context())會設置matplotlib的默認參數。

2.1 控制風格 axes_style() and set_style()

2.1.1 設置圖表主題set_style()

  有五種預設的seaborn主題:暗網格(darkgrid),白網格(whitegrid),全黑(dark),全白(white),全刻度(ticks)。以適應不一樣人不一樣的愛好。

 默認主題是暗網格,網格能夠幫助咱們定量的查找數據,而且灰色背景上的白色網格線能夠防止網格線和數據線衝突。

 

 

 

白網格(WhiteGrid)主題也是相似,但它更適合具備大量數據元素的繪圖:

 

 

對於許多繪圖(尤爲是像talks這樣的設置(especially for settings like talks),您主要但願使用圖形來提供數據中模式的印象),網格的必要性就下降了,此時可使用全黑或全白風格
1 sns.set_style("dark") #全黑風格
2 sinplot()

 

 

 

sns.set_style("white") # 全白
sinplot()

 

 

 有時你須要給出一點額外的圖表結構信息,此時全刻度模式就派上用場了。
1 sns.set_style("ticks") #全刻度
2 sinplot()

 

 

 2.1.2 去除軸脊柱

  全白(white)和全刻度(tick)均可以從去除沒必要要的上邊框和右邊框中獲益。能夠調用seaborn函數destine()來刪除它們:

1 sinplot() 2 sns.despine()

 

 一些圖表獲益於限制數據脊柱,這也能夠調用destine()來完成。當刻度沒有徹底覆蓋整個軸的範圍時,trim參數能夠用來限制已有脊柱的範圍。

1 f, ax = plt.subplots() 2 sns.violinplot(data=data) 3 sns.despine(offset=10, trim=True);

 

 

你也能夠經過despine()控制哪一個脊柱將被移除。

1 sns.set_style("whitegrid") 2 sns.boxplot(data=data, palette="deep") 3 sns.despine(left=True)

2.1.3 臨時設置繪圖風格

雖然來回切換風格很容易,可是你也能夠在一個with語句中使用axes_style()方法來臨時的設置繪圖參數。這也容許你用不一樣風格的軸來繪圖:

1 with sns.axes_style("darkgrid"): 2     plt.subplot(211) 3  sinplot() 4 plt.subplot(212) 5 sinplot(-1)

 

 

 

2.1.4 覆蓋seaborn風格元素

若是你想定製化seaborn風格,你能夠將一個字典參數傳遞給axes_style()set_style()的參數rc。並且你只能經過這個方法來覆蓋風格定義中的部分參數。

若是你想要看看這些參數都是些什麼,能夠調用這個方法,且無參數,這將會返回下面的設置:

 

 而後你能夠設置這些參數的不一樣版本了

1 sns.set_style("darkgrid", {"axes.facecolor": ".9"}) 2 sinplot()

 

 2.2  縮放繪圖:plotting_context()set_context()

有一套的參數能夠控制繪圖元素的比例。
首先,讓咱們經過set()重置默認的參數:

sns.set()

有四個預置的環境,按大小從小到大排列分別爲:papernotebooktalkposter。其中,notebook是默認的。

sns.set_context("paper") sinplot()

 

 

 

sns.set_context("talk") sinplot()

 

 

sns.set_context("poster") sinplot()

 

 

你能夠經過使用這些名字中的一個調用set_context()來設置參數,而且你能夠經過提供一個字典參數值來覆蓋參數。當改變環境時,你也能夠獨立的去縮放字體元素的大小。

sns.set_context("notebook", font_scale=1.5, rc={"lines.linewidth": 2.5}) sinplot()

 

 一樣的,你能夠經過嵌入with語句臨時的控制繪圖的比例

相關文章
相關標籤/搜索