​Python可視化神器Seaborn入門系列(三)——boxplot和violinplot

2021-03-02 Python愛好者社區

前文傳送門:

Python可視化神器Seaborn入門系列(一)——kdeplot和distplot

Python可視化神器Seaborn入門系列(二)——barplot&countplot&pointplot

Seaborn是基於matplotlib的Python可視化庫。 它提供了一個高級界面來繪製有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精緻。但應強調的是,應該把Seaborn視為matplotlib的補充,而不是替代物。

註:所有代碼均在IPython notebook中實現

箱形圖(Box-plot)又稱為盒須圖、盒式圖或箱線圖,是一種用作顯示一組數據分散情況資料的統計圖。它能顯示出一組數據的最大值最小值中位數上下四分位數。因形狀如箱子而得名。在各種領域也經常被使用,常見於品質管理。圖解如下:

接下來我們介紹Seaborn中的箱型圖的具體實現方法,這是boxplot的API:

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)

我們從具體的實例出發

%matplotlib inline
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rc("font",family="SimHei",size="15")  #解決中文亂碼問題

本文所使用的數據集是鳶尾花卉數據集

 x,y:dataframe中的列名(str)或者矢量數據

 data:dataframe或者數組

sns.boxplot(x=data["pw"],data=data)

palette:調色板,控制圖像的色調

fig,axes=plt.subplots(1,2,sharey=True)
sns.boxplot(x="catagory",y="pw",data=data,ax=axes[0]) #左圖
sns.boxplot(x="catagory",y="pw",data=data,palette="Set3",ax=axes[1]) #右圖

hue(str):dataframe的列名,按照列名中的值分類形成分類的條形圖

sns.boxplot(x="color",y="pl",data=data,hue="catagory",palette="Set3")

order, hue_order (lists of strings):用於控制條形圖的順序

sns.boxplot(x="catagory",y="pw",data=data,palette="Set3",order=[2,1,0])

orient:"v"|"h" 用於控制圖像使水平還是豎直顯示(這通常是從輸入變量的dtype推斷出來的,此參數一般當不傳入x、y,只傳入data的時候使用)

fig,axes=plt.subplots(2,1)
sns.boxplot(data=data,orient="v",palette="Set3",ax=axes[0])  #豎直顯示
sns.boxplot(data=data,orient="h",palette="Set3",ax=axes[1])  #水平顯示

fliersize:float,用於指示離群值觀察的標記大小

fig,axes=plt.subplots(1,2)
sns.boxplot(x="color",y="pl",data=data,ax=axes[0]) #fliersize默認為5
sns.boxplot(x="color",y="pl",data=data,fliersize=20,ax=axes[1])  

whis:確定離群值的上下界(IQR超過低和高四分位數的比例),此範圍之外的點將被識別為異常值。IQR指的是上下四分位的差值。

fig,axes=plt.subplots(1,2)
sns.boxplot(x="color",y="pl",data=data,whis=1,ax=axes[0])  #左圖
sns.boxplot(x="color",y="pl",data=data,whis=2,ax=axes[1])  #右圖

width:float,控制箱型圖的寬度

fig,axes=plt.subplots(1,2)
sns.boxplot(x="color",y="pl",data=data,width=0.3,ax=axes[0])  #左圖
sns.boxplot(x="color",y="pl",data=data,width=0.8,ax=axes[1])  #右圖

violinplot與boxplot扮演類似的角色,它顯示了定量數據在一個(或多個)分類變量的多個層次上的分布,這些分布可以進行比較。不像箱形圖中所有繪圖組件都對應於實際數據點,小提琴繪圖以基礎分布的核密度估計為特徵。具體用法如下:

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)

實例所用的數據集如下:

在這裡就不再介紹x,y,hue,data,order,hue_order,palette參數的用法,這些參數的用法和之前介紹的圖形的用法是一樣的,如有需要可以查看之前的內容。

先來畫一個小提琴圖:

sns.violinplot(x="gender",y="age",data=data)

split:將split設置為true則繪製分拆的violinplot以比較經過hue拆分後的兩個量:

fig,axes=plt.subplots(2,1)  
ax=sns.violinplot(x="color",y="age",data=data,hue="smoker",split=True,ax=axes[0]) #上圖,拆分後的圖
ax=sns.violinplot(x="color",y="age",data=data,hue="smoker",ax=axes[1])  #下圖

scale_hue:bool,當使用色調變量(hue參數)嵌套小提琴時,此參數確定縮放是在主要分組變量(scale_hue = true)的每個級別內還是在圖上的所有小提琴(scale_hue = false)內計算出來的。

fig,axes=plt.subplots(2,1)
ax=sns.violinplot(x="color",y="age",data=data,hue="smoker",split=True,scale_hue=False,ax=axes[0]) #上圖
ax=sns.violinplot(x="color",y="age",data=data,hue="smoker",split=True,scale_hue=True,ax=axes[1])  #下圖

orient:"v"|"h" 用於控制圖像使水平還是豎直顯示(這通常是從輸入變量的dtype推斷出來的,此參數一般當不傳入x、y,只傳入data的時候使用)

fig,axes=plt.subplots(2,1)
sns.violinplot(data=data[["height","weight","age"]],orient="v",ax=axes[0]) #上圖
sns.violinplot(data=data[["height","weight","age"]],orient="h",ax=axes[1]) #下圖

inner:控制violinplot內部數據點的表示,有「box」「quartile」「point」「stick」四種方式。

fig,axes=plt.subplots(2,2)
sns.violinplot(x="color",y="age",data=data,inner="box",ax=axes[0,0])  #鋼琴圖內顯示箱型圖(左上)
sns.violinplot(x="color",y="age",data=data,inner="quartile",ax=axes[0,1])  #鋼琴圖內顯示四分位數線(右上)
sns.violinplot(x="color",y="age",data=data,inner="point",ax=axes[1,0])  #鋼琴圖內顯示具體數據點(左下)
sns.violinplot(x="color",y="age",data=data,inner="stick",ax=axes[1,1])  #鋼琴圖內顯示具體數據棒(右下)

scale:該參數用於縮放每把小提琴的寬度,有「area」「count」「width」三種方式

fig,axes=plt.subplots(3,1)
sns.violinplot(x="color",y="age",data=data,scale="area",ax=axes[0]) #如果為"area",每把小提琴將有相同的面積(上圖)
sns.violinplot(x="color",y="age",data=data,scale="count",ax=axes[1])  #如果為"count",小提琴的寬度將根據該小組中觀察的數量來縮放(中圖)
sns.violinplot(x="color",y="age",data=data,scale="width",ax=axes[2])  #如果為"age",每把小提琴將有相同的寬度(下圖)

cut:float,距離,以帶寬大小為單位,以控制小提琴圖外殼延伸超過內部極端數據點的密度。設置為0以將小提琴範圍限制在觀察數據的範圍內(即,在ggplot中具有與trim = true相同的效果)

fig,axes=plt.subplots(2,1)
sns.violinplot(x="age",y="gender",data=data,ax=axes[0]) #上圖
sns.violinplot(x="age",y="gender",data=data,cut=0,ax=axes[1])  #下圖

width:float,控制鋼琴圖的寬度(比例)

fig,axes=plt.subplots(2,1)
sns.violinplot(x="color",y="age",data=data,ax=axes[0],width=0.5)  #上圖
sns.violinplot(x="color",y="age",data=data,ax=axes[1],width=0.9)  #下圖

這已經是Seaborn入門系列的第三篇文章了,相信大家已經大概了解Seaborn的作圖過程,也可以體會到用Seaborn作圖相比於matplotlib更加簡單。以上內容是我結合官方文檔和自己的一點理解寫成的,有什麼錯誤大家可以指出來並提提意見共同交流、進步,也希望我寫的這些能夠給閱讀完本文的你或或少的幫助!

Python愛好者社區歷史文章大合集

Python愛好者社區歷史文章列表(每周append更新一次)

福利:文末掃碼立刻關注公眾號,「Python愛好者社區」,開始學習Python課程:

關注後在公眾號內回復課程即可獲取:

小編的Python入門視頻課程!!!

崔老師爬蟲實戰案例免費學習視頻。

丘老師數據科學入門指導免費學習視頻。

陳老師數據分析報告製作免費學習視頻。

玩轉大數據分析!Spark2.X+Python 精華實戰課程免費學習視頻。

丘老師Python網絡爬蟲實戰免費學習視頻。

相關焦點

  • Python可視化神器Seaborn入門系列(二)——barplot&countplot&pointplot
    (x="color",y="age",data=data,ax=axes[0])  #上圖sns.barplot(x="color",y="age",data=data,palette="Set3",ax=axes[1])  #下圖
  • Seaborn入門系列(一)——kdeplot和distplot
    Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精緻。但應強調的是,應該把Seaborn視為matplotlib的補充,而不是替代物。
  • Seaborn 使用超簡單入門
    今天學習 seaborn ,seaborn 是基於matplotlib開發的,提供更高一級的接口,做出的可視化圖更加具有表現力。下面介紹 seaborn 庫的入門使用方法,首先導入它和 pyplot 模塊:import matplotlib.pyplot as pltimport seaborn as sns它裡面內置了一些經典數據集
  • pandas數據可視化原來也這麼厲害
    作者:小伍哥 來源:AI入門學習(公眾號)在python中,常見的數據可視化庫有3個:matplotlib:最常用的庫,可以算作可視化的必備技能庫,比較底層,api多,學起來不太容易。seaborn:是建構於matplotlib基礎上,能滿足絕大多數可視化需求,更特殊的需求還是需要學習matplotlib。pyecharts:上面的兩個庫都是靜態的可視化庫,而pyecharts有很好的web兼容性,可以做到可視化的動態效果。並且種類也比較豐富。
  • 數據可視化(二)丨使用pandas和seaborn繪圖
    pandas自身有內建的可視化工具。另一個庫seaborn則是用來做一些統計圖形。導入seaborn會改變matlotlib默認的顏色和繪圖樣式,提高可讀性和美感。即使不適用seaborn的API,也可以利用seaborn來提高可視化的效果。
  • Python可視化工具推薦:圖片交互性行極佳的Plotly
    1、 簡單介紹一般大家在學習python機器學習的時候,用的最多的可視化的包就是matplot和seaborn, 這2個可視化的優點在於門檻低,代碼容易理解,並且容易上手。唯一的可能的缺點就是畫出來的圖不能交互,簡單來說就是matplot和seaborn給出的就是一個圖片,當將滑鼠放到圖上的時候,不會顯示出圖中具體的數字是多少,而使用plotly之後,可以將圖片放大縮小,可以顯示與不顯示不同類別數據,等等。並且更加方便的是,這個圖可以嵌入到html裡面,可以直接放到網頁上面。我們話不多說,用matplot和plotly來展示相同的數據。
  • Python繪圖庫,能做到極致簡潔也只有這款了
    最近在做可視化作圖中,發現 Seaborn 許多複雜的圖形只需一行代碼就可以搞定,將作圖做到極致簡潔,不愧是一款低調卻非常有實力的可視化庫。Seaborn 是什麼Seaborn 是一個基於matplotlib的高級可視化效果庫,主要針對數據挖掘和機器學習中的變量特徵選取,Seaborn 可以用短小的代碼去繪製描述更多維度數據的可視化效果圖。即便是沒有什麼基礎的人,也可以通過極簡的代碼,做出具有分析價值而又十分美觀的圖形。
  • Python中的時間序列數據可視化的完整指南
    在分析中有什麼比一些好的可視化效果更好呢?沒有一些視覺效果,任何類型的數據分析都是不完整的。因為一個好的情節比20頁的報告更能讓你理解。因此,本文是關於時間序列數據可視化的。我將從一些非常簡單的可視化開始,然後慢慢地轉向一些高級的可視化技術和工具在開始之前,我需要再弄清楚一件事。
  • 數據可視化之——ggplot2
    核心組成部分每一張ggplot2圖形都有三個核心組成部分:數據,即待展示的維度變量構成的數據集,一般為數據框形式美學映射:用數據集的變量定義一個可視化屬性的映射圖層,至少一個圖層去描述每一個觀測,圖層一般用geom系列函數
  • 8個流行的Python可視化工具包.
    本文將介紹一些常用的 Python 可視化包,包括這些包的優缺點以及分別適用於什麼樣的場景。這篇文章只擴展到 2D 圖,為下一次講 3D 圖和商業報表(dashboard)留了一些空間,不過這次要講的包中,許多都可以很好地支持 3D 圖和商業報表。
  • python數據分析常用圖大集合
    以下默認所有的操作都先導入了numpy、pandas、matplotlib、seabornimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns一、折線圖
  • 精選10款Python可視化工具,請查收!
    它的設計和在1980年代被設計的商業化程序語言MATLAB非常接近。由於 matplotlib 是第一個 Python 可視化程序庫,有許多別的程序庫都是建立在它的基礎上或者直接調用它。開發者: Michael Waskom更多資料:http://seaborn.pydata.org/index.html3、ggplot
  • 使用Pandas,Seaborn和Plotly繪製漂亮的圖表
    完整的代碼以及Python可視化指南,介紹了Pandas,Seaborn和Plotly的繪圖。統計119是統計的入門課程。 該課程包括統計基礎,例如數據匯總(可視和定量),機率和概率的概念,回歸,抽樣以及最重要的分布。 這次是我對數量和現象的理解幾乎全部轉變為基於分布表示(大部分時間是高斯)。時至今日,我發現這兩個數量的平均含義令人吃驚,而標準偏差可以幫助您把握現象。 僅通過了解這兩個數字,就可以輕鬆得出特定結果的可能性。
  • 數據可視化最有價值的50個圖表 | 網際網路數據資訊網-199IT | 中文...
    Tips:本文原文部分代碼有不準確的地方,已進行修改;所有正確的原始碼,已整合到 jupyter notebook 文件中;運行本文代碼,除了安裝 matplotlib 和 seaborn 可視化庫外,還需要安裝其他的一些輔助可視化庫
  • 8 個流行的Python可視化工具包,你喜歡哪個?
    本文將介紹一些常用的 Python 可視化包,包括這些包的優缺點以及分別適用於什麼樣的場景。這篇文章只擴展到 2D 圖,為下一次講 3D 圖和商業報表(dashboard)留了一些空間,不過這次要講的包中,許多都可以很好地支持 3D 圖和商業報表。
  • 8個流行的Python可視化工具包,你喜歡哪個?
    本文將介紹一些常用的 Python 可視化包,包括這些包的優缺點以及分別適用於什麼樣的場景。這篇文章只擴展到 2D 圖,為下一次講 3D 圖和商業報表(dashboard)留了一些空間,不過這次要講的包中,許多都可以很好地支持 3D 圖和商業報表。
  • 想用Python做數據可視化?先邁過這個「坎」
    的人都會面臨一個問題,尤其是初學者:我應該選哪個來實現數據可視化? ggplot ggplot與Seaborn相似,都是建立在matplotlib之上,並以一種簡單的方式優化提升matplotlib可視化的視覺吸引力。但有一點與seaborn不同,它是R的ggplot2埠,因此,某些API是非Python的,但功能非常強大。
  • Python 數據集探索與可視化實例指南
    >如何合併和整理數據,如何探索和分析數據,如何創建漂亮的圖形以可視化您的發現本文適用於誰: 對於分析,您可以訪問以下三個數據源:  訂單線索(包含所有訂單線索和轉換信息)  銷售團隊(包括公司和負責的銷售代表)  發票(提供發票和參與者的信息)導入和安裝:需要安裝標準庫,此外,通過使用以下命令,在你的