国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Seaborn常見繪圖總結(jié)

以前粗略的學(xué)習(xí)過Matplotlib繪圖、Pandas繪圖(這里是pandas的常見繪圖總結(jié)),但是都未深入的去學(xué)習(xí)過,一遇到問題就翻文檔,效率低下。聽“他們”說matplotlib中的seaborn繪圖很好看而且實用,所以,這里系統(tǒng)的總結(jié)一下seaborn常見的圖形繪制。其目的也是很簡單,方便自己和給大家提供一些幫助(由于英文很菜,每次都查單詞,有些詞匯就翻譯的很生硬,還請諒解……)。

差點忘了,這里使用的數(shù)據(jù)還是seaborn的默認數(shù)據(jù),很多人再看seaborn的時候?qū)?shù)據(jù)一頭霧水,這里我將存放數(shù)據(jù)的GitHub放在這兒,理解數(shù)據(jù)的含義,對分析問題往往起著事半功倍的效果。

https://github.com/mwaskom/seaborn-data

根據(jù)Seaborn的API,具體如下:

文章目錄

      • 正文
      • 1.Relational plots(關(guān)系圖)
        • 1.1 scatterplot(散點圖)
        • 1.2 lineplot(線圖)
        • 1.3 relplot(關(guān)系圖)
      • 2.Categorical plots(分類圖)
      • 2.1 Categorical scatterplots(分類散點圖)
        • 2.1.1 stripplot(分布散點圖)
        • 2.1.2 swarmplot(分布密度散點圖)
      • 2.2 Categorical distribution plots(分類分布圖)
        • 2.2.1 boxplot(箱線圖)
        • 2.2.2 violinplot(小提琴圖)
        • 2.2.3 violinplot+stripplot(小提琴圖+分布散點圖)
        • 2.2.4 violinplot+swarmplot(小提琴圖+分布密度散點圖)
        • 2.2.5 boxplot+stripplot(箱線圖+分布散點圖)
        • 2.2.6 boxplot+swarmplot(箱線圖+分布密度散點圖)
      • 2.3 Categorical estimate plots(分類估計圖)
        • 2.3.1 barplot(條形圖)
        • 2.3.2 countplot(計數(shù)圖)
        • 2.3.3 piontplot(點圖)
        • 2.3.4 catplot()
      • 3 Distribution plots(分布圖)
        • 3.1 distplot(直方圖)
        • 3.2 kdeplot(核密度圖)
        • 3.3 jointplot(聯(lián)合分布圖)
        • 3.4 pairplot(變量關(guān)系組圖)
      • 4 Regression plots(回歸圖)
        • 4.1 lmplot(回歸圖)
        • 4.2 regplot()
      • 5.Matrix plots(矩陣圖)
        • 5.1 heatmap(熱力圖)
        • 5.2 clustermap(聚類圖)
      • 6 FacetGrid()
      • 7 PairGrid()
      • 8 主題和顏色
        • 8.1 主題(style)
        • 8.2 環(huán)境(context)
        • 8.3 顏色(color_palette())
      • 補充
        • Seaborn入門詳細教程

正文

1.Relational plots(關(guān)系圖)

Seaborn中介紹的第一種類型的圖就是Relational plots(關(guān)系圖),這里翻譯一下官網(wǎng)對他的解釋:“統(tǒng)計分析是理解數(shù)據(jù)集中變量如何相互關(guān)聯(lián)以及這些關(guān)系如何依賴于其他變量的過程??梢暬赡苁沁@個過程的核心部分,因為當(dāng)數(shù)據(jù)被正確地可視化時,人類視覺系統(tǒng)可以看到指示某種關(guān)系的趨勢和模式?!?br> Relational plots(關(guān)系圖)中主要討論的是三個seaborn函數(shù)。我們最常用的是relplot()。這是一個圖形級函數(shù)使用兩種常用方法可視化統(tǒng)計關(guān)系:散點圖(scatter plots)和線圖(line plots)。

1. scatterplot() (與kind='scatter';默認值) 2. lineplot() (與kind='line')
  • 1
  • 2
  • 1
  • 2

還是第一步,導(dǎo)入我們需要的各種模塊:

import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns.set(style='darkgrid') #這是seaborn默認的風(fēng)格
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

1.1 scatterplot(散點圖)

散點圖是統(tǒng)計可視化的重要組成部分。它使用點云來描述兩個變量的聯(lián)合分布,其中每個點代表數(shù)據(jù)集中的一個觀察。這種描繪可以推斷出大量關(guān)于它們之間是否有任何有意義的關(guān)系的信息。
在seaborn中有幾種(后面介紹)繪制散點圖的方法,當(dāng)兩個變量都是數(shù)字時,應(yīng)該使用的最基本的是scatterplot()功能。在Categorical plots(分類圖)中,我們將看到使用散點圖可視化分類數(shù)據(jù)的專門工具。

#scatterplot參數(shù)seaborn.scatterplot(x=None, y=None, hue=None, style=None, size=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=True, style_order=None, x_bins=None, y_bins=None, units=None, estimator=None, ci=95, n_boot=1000, alpha='auto', x_jitter=None, y_jitter=None, legend='brief', ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在所有的seaborn繪圖時,里面的參數(shù)是眾多的,但是不用擔(dān)心,大部分參數(shù)是相同的,只有少部分存在差異,有些通過對單詞的理解就可知道其含義,這里我只根據(jù)每個具體的圖形重要的參數(shù)做一些解釋,并簡單的介紹這些常用參數(shù)的含義。

  • x,y:容易理解就是你需要傳入的數(shù)據(jù),一般為dataframe中的列;
  • hue:也是具體的某一可以用做分類的列,作用是分類;
  • data:是你的數(shù)據(jù)集,可要可不要,一般都是dataframe;
  • style:繪圖的風(fēng)格(后面單獨介紹);
  • size:繪圖的大?。ê竺娼榻B);
  • palette:調(diào)色板(后面單獨介紹);
  • markers:繪圖的形狀(后面介紹);
  • ci:允許的誤差范圍(空值誤差的百分比,0-100之間),可為‘sd’,則采用標(biāo)準(zhǔn)差(默認95);
  • n_boot(int):計算置信區(qū)間要使用的迭代次數(shù);
  • alpha:透明度;
  • x_jitter,y_jitter:設(shè)置點的抖動程度。

先來個簡單的散點圖,繪制看看效果

#數(shù)據(jù)來源可在seaborn的GitHub上查找tips = sns.load_dataset('tips')ax = sns.scatterplot(x='total_bill', y='tip', data=tips)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3


接下來,復(fù)雜一點,按另一個變量分組(hue參數(shù)起了作用),不同類型的方式(style),點的大?。╯ize),并顯示具有不同顏色的組:

ax = sns.scatterplot(x='total_bill', y='tip',hue='day', style='time',size='size',data=tips)
  • 1
  • 2
  • 1
  • 2


是不是復(fù)雜的多,當(dāng)然還有很多參數(shù)可以改,這里就不一一介紹了,接下來看lineplot。

1.2 lineplot(線圖)

seaborn.lineplot(x=None, y=None, hue=None, size=None, style=None, data=None, palette=None, hue_order=None, hue_norm=None, sizes=None,  size_order=None, size_norm=None, dashes=True, markers=None,   style_order=None, units=None, estimator='mean', ci=95, n_boot=1000,   sort=True, err_style='band', err_kws=None, legend='brief', ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

可以看出,參數(shù)并沒有較散點圖有較大的改變,所以話不多說,直接上圖:

還是下來個簡單的:

fmri = sns.load_dataset('fmri')ax = sns.lineplot(x='timepoint', y='signal', data=fmri)#陰影是默認的置信區(qū)間,可設(shè)置ci=0,將其去除
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4


接下來,來個復(fù)雜一點兒的:

#使用標(biāo)記而不是破折號來識別組ax = sns.lineplot(x='timepoint', y='signal',hue='event', style='event',markers=True, dashes=False, data=fmri)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

1.3 relplot(關(guān)系圖)

seaborn.relplot(x=None, y=None, hue=None, size=None, style=None, data=None, row=None, col=None, col_wrap=None, row_order=None, col_order=None, palette=None, hue_order=None, hue_norm=None, sizes=None, size_order=None, size_norm=None, markers=None, dashes=None, style_order=None, legend='brief', kind='scatter', height=5, aspect=1, facet_kws=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

relplot(關(guān)系圖)可以看做是lineplot和scatterplot的歸約,可以通過kind參數(shù)來指定畫什么圖形,重要參數(shù)解釋如下:

  • kind:默認scatter(散點圖),也可以選擇kind=‘line’(線圖);
  • sizes:List、dict或tuple,可選,簡單點就是圖片大小,注意和size區(qū)分;
  • col、row:將決定網(wǎng)格的面數(shù)的分類變量,具體看實例;
tips = sns.load_dataset('tips')g = sns.relplot(x='total_bill', y='tip', data=tips)#兩者效果一模一樣ax = sns.scatterplot(x='total_bill', y='tip', data=tips)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4


其他參數(shù)設(shè)置:

g = sns.relplot(x='total_bill', y='tip', hue='time', size='size',palette=['b', 'r'], sizes=(10, 100),col='time',row='sex', data=tips)
  • 1
  • 2
  • 1
  • 2


關(guān)于kind=‘line’,這里就不畫了,重點是理解參數(shù)的意義。

2.Categorical plots(分類圖)

Categorical plots(分類圖)可以具體分為下面三種類型,8個小圖:

  1. Categorical scatterplots(分類散點圖)
    stripplot(分布散點圖)
    swarmplot(分布密度散點圖)
  2. Categorical distribution plots(分類分布圖)
    boxplot(箱線圖)
    violinplot(小提琴圖)
    boxenplot(字母價值圖???)
  3. Categorical estimate plots(分類估計圖)
    pointplot(點圖)
    barplot(條形圖)
    countplot(計數(shù)統(tǒng)計圖)

2.1 Categorical scatterplots(分類散點圖)

2.1.1 stripplot(分布散點圖)

stripplot(分布散點圖)的意思就是按照不同類別對樣本數(shù)據(jù)進行分布散點圖繪制。stripplot(分布散點圖)一般并不單獨繪制,它常常與boxplot和violinplot聯(lián)合起來繪制,作為這兩種圖的補充。

seaborn.stripplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, jitter=True, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • x,y,data:輸入數(shù)據(jù)可以多種格式傳遞,在大多數(shù)情況下,使用Numpy或Python對象是可能的,但是更可取的是pandas對象,因為相關(guān)的名稱將用于對軸進行注釋。此外,還可以對分組變量使用分類類型來控制情節(jié)元素的順序。
  • order:用order參數(shù)進行篩選分類類別,例如:order=[‘sun’,‘sat’];
  • jitter:抖動項,表示抖動程度,可以使float,或者True;
  • dodge:重疊區(qū)域是否分開,當(dāng)使用hue時,將其設(shè)置為True,將沿著分類軸將不同色調(diào)級別的條帶分開。
  • orient:“v” | “h”,vertical(垂直) 和 horizontal(水平)的意思;

基本的圖

tips = sns.load_dataset('tips')ax = sns.stripplot(x='day', y='total_bill', data=tips)
  • 1
  • 2
  • 1
  • 2


多增加幾個參數(shù)的修改:

ax = sns.stripplot(x='day', y='total_bill', hue='smoker',data=tips, jitter=True,palette='Set2', dodge=True)
  • 1
  • 2
  • 1
  • 2

2.1.2 swarmplot(分布密度散點圖)

這個函數(shù)類似于stripplot(),但是對點進行了調(diào)整(只沿著分類軸),這樣它們就不會重疊。這更好地表示了值的分布,但它不能很好地擴展到大量的觀測。

seaborn.swarmplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, dodge=False, orient=None, color=None, palette=None, size=5, edgecolor='gray', linewidth=0, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

可以看出,swarmplot和stripplot參數(shù)上基本一致,少了jitter,因為它顯示的是分布密度,不需要添加抖動項。

ax = sns.swarmplot(x='day', y='total_bill', data=tips)
  • 1
  • 1


多增加幾個參數(shù)的修改:

ax = sns.swarmplot(x='day', y='total_bill', hue='smoker',data=tips,palette='Set2', dodge=True)
  • 1
  • 1

2.2 Categorical distribution plots(分類分布圖)

2.2.1 boxplot(箱線圖)

boxplot(箱線圖,又稱為盒須圖、盒式圖)便于在變量之間或跨類別變量級別比較的方式,顯示定量數(shù)據(jù)的分布情況。框顯示數(shù)據(jù)集的四分位數(shù),線顯示分布的其余部分,它能顯示出一組數(shù)據(jù)的最大值、最小值、中位數(shù)及上下四分位數(shù),使用四分位數(shù)范圍函數(shù)的方法可以確定“離群值”的點。具體用法如下:

seaborn.boxplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, width=0.8, dodge=True, fliersize=5, linewidth=None, whis=1.5, notch=False, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • saturation:飽和度,可設(shè)置為1;
  • width:float,控制箱型圖的寬度大小;
  • fliersize:float,用于指示離群值觀察的標(biāo)記大??;
  • whis:可理解為異常值的上限IQR比例;
  • notch:我也不知道……
ax = sns.boxplot(x='day', y='total_bill', data=tips)
  • 1
  • 1

#這些參數(shù)不一定要加,簡單最好,這里只是為了展示參數(shù)的含義ax = sns.boxplot(x='day', y='total_bill', hue='time',data=tips,                  linewidth=0.5,saturation=1,width=1,fliersize=3)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

2.2.2 violinplot(小提琴圖)

violinplot與boxplot扮演類似的角色,箱線圖展示了分位數(shù)的位置,它顯示了定量數(shù)據(jù)在一個(或多個)分類變量的多個層次上的分布,這些分布可以進行比較。不像箱形圖中所有繪圖組件都對應(yīng)于實際數(shù)據(jù)點,小提琴繪圖以基礎(chǔ)分布的核密度估計為特征,通過小提琴圖可以知道哪些位置的密度較高。在圖中,白點是中位數(shù),黑色盒型的范圍是下四分位點到上四分位點,細黑線表示須。外部形狀即為核密度估計。
這是一種可以同時顯示多個數(shù)據(jù)分布的有效和有吸引力的方法,但請記住,估計過程受樣本大小的影響,相對較小的樣本的小提琴手看起來可能會顯得非常平滑。具體用法如下:

seaborn.violinplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, bw='scott', cut=2, scale='area', scale_hue=True, gridsize=100, width=0.8, inner='box', split=False, dodge=True, orient=None, linewidth=None, color=None, palette=None, saturation=0.75, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • bw:‘scott’, ‘silverman’, float,控制擬合程度。在計算內(nèi)核帶寬時,可以引用規(guī)則的名稱(‘scott’, ‘silverman’)或者使用比例(float)。實際內(nèi)核大小將通過將比例乘以每個bin內(nèi)數(shù)據(jù)的標(biāo)準(zhǔn)差來確定;
  • cut:空值外殼的延伸超過極值點的密度,float;
  • scale:“area”, “count”, “width”,用來縮放每把小提琴的寬度的方法;
  • scale_hue:當(dāng)使用hue分類后,設(shè)置為True時,此參數(shù)確定是否在主分組變量進行縮放;
  • gridsize:設(shè)置小提琴圖的平滑度,越高越平滑;
  • inner:“box”, “quartile”, “point”, “stick”, None,小提琴內(nèi)部數(shù)據(jù)點的表示。分別表示:箱子,四分位,點,數(shù)據(jù)線和不表示;
  • split:是否拆分,當(dāng)設(shè)置為True時,繪制經(jīng)hue分類的每個級別畫出一半的小提琴;
ax = sns.violinplot(x='day', y='total_bill', data=tips)
  • 1
  • 1


設(shè)置按性別分類,調(diào)色為“Set2”,分割,以計數(shù)的方式,不表示內(nèi)部。

ax = sns.violinplot(x='day', y='total_bill', hue='sex',data=tips, palette='Set2', split=True,scale='count', inner=None)
  • 1
  • 2
  • 1
  • 2

2.2.3 violinplot+stripplot(小提琴圖+分布散點圖)

ax = sns.violinplot(x='tip', y='day', data=tips, inner=None,whis=np.inf)ax = sns.stripplot(x='tip', y='day', data=tips,jitter=True, color='c')
  • 1
  • 2
  • 1
  • 2

2.2.4 violinplot+swarmplot(小提琴圖+分布密度散點圖)

ax = sns.violinplot(x='tip', y='day', data=tips,inner=None, whis=np.inf)ax = sns.swarmplot(x='tip', y='day', data=tips, color='c')
  • 1
  • 2
  • 1
  • 2

2.2.5 boxplot+stripplot(箱線圖+分布散點圖)

ax = sns.boxplot(x='tip', y='day', data=tips, whis=np.inf)ax = sns.stripplot(x='tip', y='day', data=tips,jitter=True, color='c')
  • 1
  • 2
  • 1
  • 2

2.2.6 boxplot+swarmplot(箱線圖+分布密度散點圖)

ax = sns.boxplot(x='tip', y='day', data=tips, whis=np.inf)ax = sns.swarmplot(x='tip', y='day', data=tips, color='c')
  • 1
  • 2
  • 1
  • 2

2.3 Categorical estimate plots(分類估計圖)

2.3.1 barplot(條形圖)

條形圖表示數(shù)值變量與每個矩形高度的中心趨勢的估計值,用矩形條表示點估計和置信區(qū)間,并使用誤差線提供關(guān)于該估計值附近的不確定性的一些指示。具體用法如下:

seaborn.barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, orient=None, color=None, palette=None, saturation=0.75, errcolor='.26', errwidth=None,capsize=None, dodge=True, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • estimator:用于估計每個分類箱內(nèi)的統(tǒng)計函數(shù),默認為mean。當(dāng)然你也可以設(shè)置estimator=np.median/np.std/np.var……
  • order:選擇和空值順序,例如:order=[‘Sat’,‘Sun’];
  • ci:允許的誤差的范圍(控制誤差棒的百分比,在0-100之間),若填寫'sd',則用標(biāo)準(zhǔn)誤差(默認為95),也可設(shè)置ci=None;
  • capsize:設(shè)置誤差棒帽條(上下兩根橫線)的寬度,float;
  • saturation:飽和度;
  • errcolor:表示置信區(qū)間的線條的顏色;
  • errwidth:float,設(shè)置誤差條線(和帽)的厚度。

根據(jù)性別分組:

ax = sns.barplot(x='day', y='total_bill', hue='sex', data=tips)
  • 1
  • 1


設(shè)置estimator為中位數(shù)(numpy的統(tǒng)計函數(shù)都可以,只要你覺得有意義),設(shè)置誤差棒的寬度,誤差棒的顏色為“c”。

ax = sns.barplot(x='day', y='total_bill',hue='sex', data=tips, estimator=np.median,capsize=0.2,errcolor='c')
  • 1
  • 2
  • 1
  • 2

2.3.2 countplot(計數(shù)圖)

一個計數(shù)圖可以被認為是一個分類直方圖,而不是定量的變量?;镜腶pi和選項與barplot()相同,因此您可以比較嵌套變量中的計數(shù)。(工作原理就是對輸入的數(shù)據(jù)分類,條形圖顯示各個分類的數(shù)量)。具體參數(shù)如下:

seaborn.countplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, orient=None, color=None, palette=None, saturation=0.75, dodge=True, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

這里參數(shù)并沒有太多改變,orient就是改變方向。但是,值得注意的是缺少了一些參數(shù),而且countplot中不能同時輸入x和y,卻可以使用hue(這我就很納悶了???還望大佬解釋解釋)。

titanic = sns.load_dataset('titanic')ax = sns.countplot(x='class', hue='who', data=titanic)
  • 1
  • 2
  • 1
  • 2

2.3.3 piontplot(點圖)

用散點圖符號表示點估計和置信區(qū)間,點圖代表散點圖位置的數(shù)值變量的中心趨勢估計,并使用誤差線提供關(guān)于該估計的不確定性的一些指示。點圖可能比條形圖(barplot)更有用于聚焦一個或多個分類變量的不同級別之間的比較。他們尤其善于表現(xiàn)交互作用:一個分類變量的層次之間的關(guān)系如何在第二個分類變量的層次之間變化。連接來自相同色調(diào)等級的每個點的線允許交互作用通過斜率的差異進行判斷,這比對幾組點或條的高度比較容易。具體用法如下:

seaborn.pointplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, markers='o', linestyles='-', dodge=False, join=True, scale=1, orient=None, color=None, palette=None, errwidth=None, capsize=None, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • join:默認兩個均值點會相連接,若不想顯示,可以通過join=False參數(shù)實現(xiàn);
  • scale:float,均值點(默認)和連線的大小和粗細。
tips = sns.load_dataset('tips')ax = sns.pointplot(x='time', y='total_bill', data=tips)
  • 1
  • 2
  • 1
  • 2


嘗試更多參數(shù),按性別分組,用中位數(shù)進行比較,分開顯示,使用調(diào)色板,修改標(biāo)記類型和線條類型(很多參數(shù)都不是必要的,這里只是盡量充分介紹其用法)。

ax = sns.pointplot(x='time', y='total_bill', hue='smoker',data=tips,estimator=np.median,dodge=True, palette='Set2',markers=['o', 'x'],linestyles=['-', '--'])
  • 1
  • 2
  • 1
  • 2

2.3.4 catplot()

該函數(shù)提供了對幾個軸級函數(shù)的訪問,這些函數(shù)使用幾種可視化表示形式之一顯示一個數(shù)字變量和一個或多個分類變量之間的關(guān)系。其實說白了就是利用kind參數(shù)來畫前面Categorical plots(分類圖)中的任意8個圖形。具體如下:

seaborn.catplot(x=None, y=None, hue=None, data=None, row=None, col=None, col_wrap=None, estimator=<function mean>, ci=95, n_boot=1000, units=None, order=None, hue_order=None, row_order=None, col_order=None, kind='strip', height=5, aspect=1, orient=None, color=None, palette=None, legend=True,  legend_out=True, sharex=True, sharey=True, margin_titles=False,  facet_kws=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

有沒有發(fā)現(xiàn),它和regplot(關(guān)系圖)的使用方法差不多?

  • kind:默認strip(分布散點圖),也可以選擇“point”, “bar”, “count”,
  • col、row:將決定網(wǎng)格的面數(shù)的分類變量,可具體制定;
  • col_wrap:指定每行展示的子圖個數(shù),但是與row不兼容;
  • row_order, col_order : 字符串列表,安排行和列,以及推斷數(shù)據(jù)中的對象;
  • height,aspect:與圖像的大小有關(guān);
  • sharex,sharey:bool, ‘col’or ‘row’,是否共享想,x,y坐標(biāo);

注:單個圖形里面的參數(shù)也是可以傳入里面的

繪制一個小提琴圖,按數(shù)據(jù)中的kind類別分組(數(shù)據(jù)中的),不要中心框線。

exercise = sns.load_dataset('exercise')g = sns.catplot(x='time', y='pulse', hue='kind',data=exercise, kind='violin',inner=None)
  • 1
  • 2
  • 1
  • 2


使用diet來分成幾個圖形,并用height、aspect來設(shè)置圖片比例:

g = sns.catplot(x='time', y='pulse', hue='kind',kind='bar',col='diet', data=exercise,height=4, aspect=0.8)
  • 1
  • 2
  • 1
  • 2

3 Distribution plots(分布圖)

3.1 distplot(直方圖)

直方圖又稱質(zhì)量分布圖,它是表示資料變化情況的一種主要工具。用直方圖可以解析出資料的規(guī)則性,比較直觀地看出產(chǎn)品質(zhì)量特性的分布狀態(tài),對于資料分布狀況一目了然,便于判斷其總體質(zhì)量分布情況。直方圖表示通過沿數(shù)據(jù)范圍形成分箱(好像是等距分箱?),然后繪制條以顯示落入每個分箱的觀測次數(shù)的數(shù)據(jù)分布。具體參數(shù)如下:

seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False, fit=None, hist_kws=None, kde_kws=None, rug_kws=None, fit_kws=None, color=None, vertical=False, norm_hist=False, axlabel=None, label=None, ax=None)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • bins:int或list,控制直方圖的劃分,設(shè)置矩形圖(就是塊兒的多少)數(shù)量,除特殊要求一般默認;
  • hist:是否顯示方塊;
  • kde:是否顯示核密度估計曲線;
  • rug:控制是否生成觀測數(shù)值的小細條(邊際毛毯);
  • fit:控制擬合的參數(shù)分布圖形,能夠直觀地評估它與觀察數(shù)據(jù)的對應(yīng)關(guān)系(黑色線條為確定的分布);
    -{hist, kde, rug, fit}_kws :參數(shù)接收字典類型,可以自行定義更多高級的樣式;
  • norm_hist:若為True, 則直方圖高度顯示密度而非計數(shù)(含有kde圖像中默認為True);
  • vertical:放置的方向,如果為真,則觀測值位于y-軸上(默認False,x軸上);
  • axlabel : string, False, or None, 設(shè)置標(biāo)簽。

設(shè)置隨機種子(666),隨機生成1000個符合正態(tài)分布的數(shù):

np.random.seed(666)x = np.random.randn(1000)ax = sns.distplot(x)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3


修改更多參數(shù),設(shè)置方塊的數(shù)量,方塊、密度曲線和邊際毛毯都顯示,顏色為‘k’,axlabel=‘norm’。

np.random.seed(666)x = np.random.randn(1000)ax = sns.distplot(x, bins=100,hist=True, kde=True, rug=True,color='k',axlabel='norm')
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

3.2 kdeplot(核密度圖)

核密度估計(kernel density estimation)是在概率論中用來估計未知的密度函數(shù),屬于非參數(shù)檢驗方法之一。通過核密度估計圖可以比較直觀的看出數(shù)據(jù)樣本本身的分布特征。具體用法如下:

seaborn.kdeplot(data, data2=None, shade=False, vertical=False, kernel='gau', bw='scott', gridsize=100, cut=3, clip=None, legend=True, cumulative=False, shade_lowest=True, cbar=False, cbar_ax=None, cbar_kws=None, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • data、data2:表示可以輸入雙變量,繪制雙變量核密度圖;
  • shade:是否填充陰影,默認不填充;
  • vertical:放置的方向,如果為真,則觀測值位于y軸上(默認False,x軸上);
  • kernel:{‘gau’ | ‘cos’ | ‘biw’ | ‘epa’ | ‘tri’ | ‘triw’ }。默認高斯核(‘gau’)二元KDE只能使用高斯核。至于什么是核函數(shù),這個學(xué)問就大了,建議多看看論文;
  • bw:{‘scott’ | ‘silverman’ | scalar | pair of scalars }。四類核密度帶方法,默認scott (斯考特帶寬法),建議下來了解一下這四種方法的區(qū)別;
  • gridsize:這個參數(shù)指的是每個格網(wǎng)里面,應(yīng)該包含多少個點,越大,表示格網(wǎng)里面的點越多(覺得電腦OK的可以試試,有驚喜),越小表示格網(wǎng)里面的點越少;
  • cut:參數(shù)表示,繪制的時候,切除帶寬往數(shù)軸極限數(shù)值的多少,這個參數(shù)可以配合bw參數(shù)使用;
  • cumulative:是否繪制累積分布;
  • shade_lowest:是否有最低值渲染,這個參數(shù)只有在二維密度圖上才有效;
  • clip:表示查看部分結(jié)果,是一個區(qū)間;
  • cbar:參數(shù)若為True,則會添加一個顏色棒(顏色幫在二元kde圖像中才有);

有木有覺得參數(shù)超多,所以說核密度圖還是比較難的(雖然容易畫,但原理很復(fù)雜)。下面看幾個簡單的例子:簡單生成一個多元正態(tài)分布(對numpy隨機分布不了解的朋友,可以看我總結(jié)的numpy函數(shù))。

mean, cov = [0, 2], [(1, .5), (.5, 1)]#這是一個多元正態(tài)分布x, y = np.random.multivariate_normal(mean, cov, size=50).Tax = sns.kdeplot(x)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4


接下來繪制雙變量核密度圖①:

ax=sns.kdeplot(x,y,shade=True,shade_lowest=False,cbar=True,color='r')
  • 1
  • 1


接下來繪制雙變量核密度圖②:二色二元密度圖,使用大名鼎鼎的鳶尾花數(shù)據(jù)集

iris = sns.load_dataset('iris')setosa = iris.loc[iris.species == 'setosa']virginica = iris.loc[iris.species == 'virginica']ax = sns.kdeplot(setosa.sepal_width, setosa.sepal_length,cmap='Reds', shade=True, shade_lowest=False)ax = sns.kdeplot(virginica.sepal_width, virginica.sepal_length,cmap='Blues', shade=True, shade_lowest=False)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.3 jointplot(聯(lián)合分布圖)

聯(lián)合概率分布簡稱聯(lián)合分布,是兩個及以上隨機變量組成的隨機向量的概率分布。根據(jù)隨機變量的不同,聯(lián)合概率分布的表示形式也不同。對于離散型隨機變量,聯(lián)合概率分布可以以列表的形式表示,也可以以函數(shù)的形式表示;對于連續(xù)型隨機變量,聯(lián)合概率分布通過一非負函數(shù)的積分表示。具體參數(shù)如下:

seaborn.jointplot(x, y, data=None, kind='scatter', stat_func=None, color=None, height=6, ratio=5, space=0.2, dropna=True, xlim=None, ylim=None, joint_kws=None, marginal_kws=None, annot_kws=None, **kwargs)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  • x,y:為DataFrame中的列名或者是兩組數(shù)據(jù),data指向dataframe;
  • kind : { “scatter” | “reg” | “resid” | “kde” | “hex” }。默認散點圖;
  • stat_func:用于計算統(tǒng)計量關(guān)系的函數(shù);
  • ratio:中心圖與側(cè)邊圖的比例,越大、中心圖占比越大;
  • dropna:去除缺失值;
  • height:圖的尺度大?。ㄕ叫危?;
  • space:中心圖與側(cè)邊圖的間隔大??;
  • xlim,ylim:x,y的范圍

用邊緣直方圖繪制散點圖:

tips = sns.load_dataset('tips')g = sns.jointplot(x='total_bill', y='tip', data=tips,height=5)
  • 1
  • 2
  • 1
  • 2


#用密度估計替換散點圖和直方圖,調(diào)節(jié)間隔和比例:

iris = sns.load_dataset('iris')g = sns.jointplot('sepal_width', 'petal_length', data=iris,kind='kde', space=0,ratio=6 ,color='r')
  • 1
  • 2
  • 1
  • 2

3.4 pairplot(變量關(guān)系組圖)

在數(shù)據(jù)集中繪制成對關(guān)系的圖。默認情況下,該函數(shù)將創(chuàng)建一個軸網(wǎng)格,這樣數(shù)據(jù)中的每個變量都將通過跨一行的y軸和跨單個列的x軸共享。對對角線軸的處理方式不同,繪制的圖顯示該列中變量的數(shù)據(jù)的單變量分布。此外,還可以在行和列上顯示變量子集或繪制不同的變量。具體如下:

seaborn.pairplot(data, hue=None, hue_order=None, palette=None, vars=None, x_vars=None, y_vars=None, kind='scatter', diag_kind='auto', markers=None, height=2.5, aspect=1, dropna=True, plot_kws=None, diag_kws=None, grid_kws=None, size=None)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • var:data中的子集,否則使用data中的每一列;
  • x_vars / y_vars:可以具體細分,誰與誰比較;
  • kind:{‘scatter’, ‘reg’};
  • diag_kind:{‘a(chǎn)uto’, ‘hist’, ‘kde’}。單變量圖(自己與自己比較)的繪圖,對角線子圖的圖樣。默認情況取決于是否使用“hue”。

采用默認格式繪制鳶尾花數(shù)據(jù)集,這樣對于分類問題來說并不能有效的觀察數(shù)據(jù)情況。

iris = sns.load_dataset('iris')g = sns.pairplot(iris)
  • 1
  • 2
  • 1
  • 2


使用hue='species'對不同種類區(qū)分顏色繪制,并使用不同標(biāo)記:

g = sns.pairplot(iris, hue='species', markers=['o', 's', 'D'])
  • 1
  • 1

4 Regression plots(回歸圖)

4.1 lmplot(回歸圖)

許多數(shù)據(jù)集都有著眾多連續(xù)變量。數(shù)據(jù)分析的目的經(jīng)常就是衡量變量之間的關(guān)系,lmplot() 是一個非常有用的方法,它會在繪制二維散點圖時,自動完成回歸擬合。具體參數(shù)如下:

seaborn.lmplot(x, y, data, hue=None, col=None, row=None, palette=None, col_wrap=None, height=5, aspect=1, markers='o', sharex=True, sharey=True, hue_order=None, col_order=None, row_order=None, legend=True, legend_out=True, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, x_jitter=None, y_jitter=None, scatter_kws=None, line_kws=None, size=None)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • col,row:和前面一樣,根據(jù)所指定屬性在列,行上分類;
  • col_wrap:指定每行的列數(shù),最多等于col參數(shù)所對應(yīng)的不同類別的數(shù)量;
  • aspect:控制圖的長寬比;
  • x_jitter,y_jitter:給x,y軸隨機增加噪音點,設(shè)置這兩個參數(shù)不影響最后的回歸直線;
  • order:多項式回歸,控制進行回歸的冪次,設(shè)定指數(shù),可以用多項式擬合;
  • logistic:邏輯回歸;
  • robust:如果是True,使用statsmodels來估計一個穩(wěn)健的回歸(魯棒線性模型)。這將減少異常值。請注意 logistic回歸和robust回歸相較于簡單線性回歸需要更大的計算量,其置信區(qū)間的產(chǎn)生也依賴于bootstrap采樣,你可以關(guān)掉置信區(qū)間估計來提高速度(ci=None);
    • lowess:如果是True,使用statsmodels來估計一個非參數(shù)的模型(局部加權(quán)線性回歸)。這種方法具有最少的假設(shè),盡管它是計算密集型的,但目前無法為這類模型繪制置信區(qū)間;
  • logx:轉(zhuǎn)化為log(x)
  • truncate:默認情況下,繪制散點圖后繪制回歸線以填充x軸限制。如果為True,則它將被數(shù)據(jù)限制所限制;
    繪制一個第三個變量的條件,并繪制不同顏色的回歸圖:
g = sns.lmplot(x='total_bill', y='tip', hue='smoker', data=tips)
  • 1
  • 1

將變量分為多行,并改變大?。?/p>

g = sns.lmplot(x='total_bill', y='tip', col='day', hue='day',data=tips, col_wrap=2, height=4)
  • 1
  • 2
  • 1
  • 2

4.2 regplot()

regplot()和lmplot()都可以繪制線性回歸曲線。這兩個函數(shù)非常相似,甚至共有一些核心功能。具體參數(shù)如下:

seaborn.regplot(x, y, data=None, x_estimator=None, x_bins=None, x_ci='ci', scatter=True, fit_reg=True, ci=95, n_boot=1000, units=None, order=1, logistic=False, lowess=False, robust=False, logx=False, x_partial=None, y_partial=None, truncate=False, dropna=True, x_jitter=None, y_jitter=None, label=None, color=None, marker='o', scatter_kws=None, line_kws=None, ax=None)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

至于兩者有什么具體的區(qū)別,我也不清楚,但是感覺lmplot()要比regplot()強大一點……以后再總結(jié)吧,還是繼續(xù)繪圖。

g = sns.regplot(x='total_bill', y='tip',data=tips)
  • 1
  • 1


嘗試邏輯回歸分類:

tips['big_tip'] = (tips.tip / tips.total_bill) > .175ax = sns.regplot(x='total_bill', y='big_tip', data=tips,logistic=True, n_boot=500, y_jitter=.03)
  • 1
  • 2
  • 1
  • 2

5.Matrix plots(矩陣圖)

5.1 heatmap(熱力圖)

利用熱力圖可以看數(shù)據(jù)表里多個特征兩兩的相似度,類似于色彩矩陣。具體參數(shù)如下:

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto', mask=None, ax=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • data:矩陣數(shù)據(jù)集,可以使numpy的數(shù)組(array),如果是pandas的dataframe,則df的index/column信息會分別對應(yīng)到heatmap的columns和rows;
  • vmax,vmin:圖例中最大值和最小值的顯示值,沒有該參數(shù)時默認不顯示;
  • cmap:從數(shù)字到色彩空間的映射,取值是matplotlib包里的colormap名稱或顏色對象,或者表示顏色的列表;
  • center:數(shù)據(jù)表取值有差異時,設(shè)置熱力圖的色彩中心對齊值。通過設(shè)置center值,可以調(diào)整生成的圖像顏色的整體深淺;設(shè)置center數(shù)據(jù)時,如果有數(shù)據(jù)溢出,則手動設(shè)置的vmax、vmin會自動改變 ;
  • robust:默認取值False;如果是False,且沒設(shè)定vmin和vmax的值,熱力圖的顏色映射范圍根據(jù)具有魯棒性的分位數(shù)設(shè)定,而不是用極值設(shè)定;
  • annot(annotate的縮寫):默認取值False;如果是True,在熱力圖每個方格寫入數(shù)據(jù);如果是矩陣,在熱力圖每個方格寫入該矩陣對應(yīng)位置數(shù)據(jù);
  • fmt:字符串格式代碼,矩陣上標(biāo)識數(shù)字的數(shù)據(jù)格式,比如保留小數(shù)點后幾位數(shù)字;
  • annot_kws:默認取值False;如果是True,設(shè)置熱力圖矩陣上數(shù)字的大小顏色字體;
  • square:設(shè)置熱力圖矩陣小塊形狀,默認值是False;
  • xticklabels, yticklabels:控制每行列標(biāo)簽名的輸出。默認值是auto,自動選擇標(biāo)簽的標(biāo)注間距,將標(biāo)簽名不重疊的部分(或全部)輸出。如果是True,則以DataFrame的列名作為標(biāo)簽名;
  • mask:控制某個矩陣塊是否顯示出來。默認值是None。如果是布爾型的DataFrame,則將DataFrame里True的位置用白色覆蓋掉。

繪制一個簡單的numpy數(shù)組的熱力圖:

x = np.random.rand(10, 12)ax = sns.heatmap(x)
  • 1
  • 2
  • 1
  • 2


顯示數(shù)字和保留幾位小數(shù),并修改數(shù)字大小字體顏色格式:

x= np.random.rand(10, 10)ax = sns.heatmap(x,annot=True,annot_kws={'size':9,'weight':'bold', 'color':'w'},fmt='.2f')
  • 1
  • 2
  • 1
  • 2

5.2 clustermap(聚類圖)

clustermap() 可以將矩陣數(shù)據(jù)集繪制為層次聚類熱圖。具體參數(shù)如下:

seaborn.clustermap(data, pivot_kws=None, method='average', metric='euclidean', z_score=None, standard_scale=None, figsize=None, cbar_kws=None, row_cluster=True, col_cluster=True, row_linkage=None, col_linkage=None, row_colors=None, col_colors=None, mask=None, **kwargs)
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

說實在的這個我也不太懂,就拋磚引玉的畫一下圖。

iris = sns.load_dataset('iris')species = iris.pop('species')g = sns.clustermap(iris)
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

6 FacetGrid()

在探索中多維數(shù)據(jù)時,一種有用的方法是在數(shù)據(jù)集的不同子集上繪制同一類型圖的多個子圖。該類將數(shù)據(jù)集映射到與數(shù)據(jù)集中變量級別相對應(yīng)的行和列網(wǎng)格中排列的多個軸上。它生成的圖形通常被稱為“格子”或“格子”繪圖,它可以使查看者快速觀察到有關(guān)復(fù)雜數(shù)據(jù)的大量信息。

FacetGrid當(dāng)您想要在數(shù)據(jù)集的子集中分別可視化變量的分布或多個變量之間的關(guān)系時,該類非常有用。一個FacetGrid可以與多達三個維度可以得出:row,col,和hue。前兩個與得到的軸陣列有明顯的對應(yīng)關(guān)系; 將hue變量視為沿深度軸的第三個維度,其中不同的級別用不同的顏色繪制。通過使用FacetGrid數(shù)據(jù)框初始化對象以及將形成網(wǎng)格的行,列或hue維度的變量名稱來使用該類。這些變量(hue)應(yīng)該是分類的或離散的,然后變量的每個級別的數(shù)據(jù)將用于沿該軸的小平面。此外,每個的relplot(),catplot()以及l(fā)mplot()在內(nèi)部使用這些對象。

在大多數(shù)情況下,與直接使用FacetGrid相比,使用圖形級函數(shù)(例如relplot()或catart()要好得多。具體參數(shù)如下:

seaborn.FacetGrid(data, row=None, col=None, hue=None, col_wrap=None, sharex=True, sharey=True, height=3, aspect=1, palette=None, row_order=None, col_order=None, hue_order=None, hue_kws=None, dropna=True, legend_out=True, despine=True, margin_titles=False, xlim=None, ylim=None, subplot_kws=None, gridspec_kws=None, size=None)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

其實細心的您可能已經(jīng)發(fā)現(xiàn)某些具有相同的規(guī)律,不妨看看前面relplot()、catplot()、lmplot()的參數(shù),是不是基本上差不多呢?沒錯,其實上面三個繪圖函數(shù),都用到了FacetGrid()的思想。此外,pairplot()走某種意義上來說,也與他們很像。

FacetGrid并不能直接繪制我們想要的圖像,它的基本工作流程是FacetGrid使用數(shù)據(jù)集和用于構(gòu)造網(wǎng)格的變量初始化對象。然后,可以通過調(diào)用FacetGrid.map()或?qū)⒁粋€或多個繪圖函數(shù)應(yīng)用于每個子集 FacetGrid.map_dataframe(),最后,可以使用其他修改參數(shù)的方法調(diào)整繪圖。

下面展示具體實例:使用TIPS數(shù)據(jù)集初始化2x2個面網(wǎng)格:

tips = sns.load_dataset('tips')g = sns.FacetGrid(tips, col='time', row='smoker')#2*2
  • 1
  • 2
  • 1
  • 2


然后,在每個方面上繪制一個二元函數(shù):

tips = sns.load_dataset('tips')g = sns.FacetGrid(tips, col='time', row='smoker')g = g.map(plt.scatter, 'total_bill', 'tip', color='c')
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3


這里我其實有個疑問,為什么g.map()里面用的是plt.scatter等matplotlib.pyplot來繪制圖形,我嘗試了用seaborn里面的sns.scatterplot等也可以繪制相應(yīng)的圖形,區(qū)別在于點的大小形狀不一樣,還望各位看官指點一下其中的差別。

接下來比較一下FacetGrid.map()繪圖與relplot()、catplot()、lmplot()繪圖的區(qū)別(這里只比較relplot()來繪制散點圖):

sns.relplot(x='total_bill', y='tip', color='c',col='time',  hue='smoker',data=tips)
  • 1
  • 1


看出來了嗎?結(jié)果是不是很清晰,一目了然?所以說:在大多數(shù)情況下,與直接使用FacetGrid相比,使用圖形級函數(shù)(例如relplot()或catart()要好得多。

7 PairGrid()

用于繪制數(shù)據(jù)集中成對關(guān)系的子圖網(wǎng)格。該類將數(shù)據(jù)集中的每個變量映射到多軸網(wǎng)格中的列和行。不同的軸級繪圖函數(shù)可用于繪制上、下三角形的二元圖解,并可在對角線上顯示每個變量的邊緣分布。讀到這里你就會發(fā)現(xiàn),它和pairplot()有什么區(qū)別呢?

其實PairGrid和pairplot從原理來說是一樣的,但是前面我們可以發(fā)現(xiàn)pairplot繪制的圖像上、下三角形是關(guān)于主對角線對稱的,而PairGrid則可修改上、下三角形和主對角線的圖像形狀。具體事例如下:

iris = sns.load_dataset('iris')g = sns.PairGrid(iris,hue='species')g = g.map_upper(sns.scatterplot)#在上對角線子圖上用二元函數(shù)繪制的圖g = g.map_lower(sns.kdeplot,color='r')#在下對角線子圖上用二元函數(shù)繪制的圖g = g.map_diag(sns.kdeplot)#對角線單變量子圖
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

8 主題和顏色

8.1 主題(style)

seaborn設(shè)置風(fēng)格的方法主要有三種:

  1. set,通用設(shè)置接口
  2. set_style,風(fēng)格專用設(shè)置接口,設(shè)置后全局風(fēng)格隨之改變
  3. axes_style,設(shè)置當(dāng)前圖(axes級)的風(fēng)格,同時返回設(shè)置后的風(fēng)格系列參數(shù),支持with關(guān)鍵字用法

seaborn中主要有以下幾個主題:

sns.set_style('whitegrid')  # 白色網(wǎng)格背景sns.set_style('darkgrid')   # 灰色網(wǎng)格背景sns.set_style('dark')       # 灰色背景sns.set_style('white')      # 白色背景sns.set_style('ticks')      # 四周加邊框和刻度
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5


相比matplotlib繪圖風(fēng)格,seaborn繪制的直方圖會自動增加空白間隔,圖像更為清爽。而不同seaborn風(fēng)格間,則主要是繪圖背景色的差異。

8.2 環(huán)境(context)

設(shè)置環(huán)境的方法也有3種:

  1. set,通用設(shè)置接口
  2. set_context,環(huán)境設(shè)置專用接口,設(shè)置后全局繪圖環(huán)境隨之改變
  3. plotting_context,設(shè)置當(dāng)前圖(axes級)的繪圖環(huán)境,同時返回設(shè)置后的環(huán)境系列參數(shù),支持with關(guān)鍵字用法
sns.plotting_context('notebook') # 默認sns.plotting_context('paper')sns.plotting_context('talk')sns.plotting_context('poster')
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4


可以看出,4種默認繪圖環(huán)境最直觀的區(qū)別在于字體大小的不同,而其他方面也均略有差異。詳細對比下4種繪圖環(huán)境下的系列參數(shù)設(shè)置:

8.3 顏色(color_palette())

seaborn風(fēng)格多變的另一大特色就是支持個性化的顏色配置。顏色配置的方法有多種,常用方法包括以下兩個:

  1. color_palette,基于RGB原理設(shè)置顏色的接口,可接收一個調(diào)色板對象作為參數(shù),同時可以設(shè)置顏色數(shù)量
  2. hls_palette,基于Hue(色相)、Luminance(亮度)、Saturation(飽和度)原理設(shè)置顏色的接口,除了顏色數(shù)量參數(shù)外,另外3個重要參數(shù)即是hls

同時,為了便于查看調(diào)色板樣式,seaborn還提供了一個專門繪制顏色結(jié)果的方法palplot。

補充

Seaborn入門詳細教程

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Python數(shù)據(jù)分析 | seaborn工具與數(shù)據(jù)可視化
可視化神器Seaborn的超全介紹
Python數(shù)據(jù)可視化庫seaborn的使用總結(jié)
Seaborn 繪制 21 種超實用精美圖表
7天學(xué)會Python最佳可視化工具Seaborn(五):結(jié)構(gòu)化展示多維數(shù)據(jù)
第126天:Seaborn-可視化統(tǒng)計關(guān)系
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服