python boxplot orient,Python可視化 | Seaborn5分鐘入門(三)——boxplot和violinplot

 2023-11-19 阅读 50 评论 0

摘要:微信公眾號:「Python讀財」如有問題或建議,請公眾號留言Seaborn是基于matplotlib的Python可視化庫。 它提供了一個高級界面來繪制有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,不需要經過大

微信公眾號:「Python讀財」

如有問題或建議,請公眾號留言

Seaborn是基于matplotlib的Python可視化庫。 它提供了一個高級界面來繪制有吸引力的統計圖形。Seaborn其實是在matplotlib的基礎上進行了更高級的API封裝,從而使得作圖更加容易,不需要經過大量的調整就能使你的圖變得精致。

3dd0e6178a7191478a5177bc3f8cd721.png

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

boxplot

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

70cf8d0b53456acc121e37c95ee19722.png

接下來我們介紹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") ?#解決中文亂碼問題

復制代碼

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

data.head(6)

復制代碼

9c491e9e9598ed6fc025c6e3d24a17e7.png

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

data:dataframe或者數組

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

復制代碼

ec8d40fbd073eca12be9e88d6e524719.png

**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]) #右圖

復制代碼

19b917ea70d9b56e843f08aaaa8fa5ba.png

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

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

復制代碼

6c113a928dd11e9a1d89da33d3822f22.png

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

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

復制代碼

c19356b12a5df21e7e73af584f89b4de.png

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]) ?#水平顯示

復制代碼

f44dd63921893285bb5eb8d7924a2bf4.png

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

復制代碼

9329963b5ca711dd44641142fae58a29.png

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]) ?#右圖

復制代碼

505ba67605a294b7ee7c030fe59e3d41.png

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]) ?#右圖

復制代碼

bb3f77a4176ac718067af76dabc07bcc.png

violinplot

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)

實例所用的數據集如下:

data.head(6)

復制代碼

70d6c3c0416891e8962517e5c98ce83a.png

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

先來畫一個小提琴圖:

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

復制代碼

729aef452024a839e121a61a7d0defb3.png

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]) ?#下圖

復制代碼

78e6bb0e0f8e0c27a6c429df7bbf1c96.png

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]) ?#下圖

復制代碼

46469110b70b5082452633d843ce13e9.png

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]) #下圖

復制代碼

aa2a2cae5fdc33b4e40f39104a9246a7.png

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]) ?#鋼琴圖內顯示具體數據棒(右下)

復制代碼

9e02c963405b80b37893c69b515a7000.png

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",每把小提琴將有相同的寬度(下圖)

復制代碼

45c7fa128ff0d1d940adeff55e9aa53d.png

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]) ?#下圖

復制代碼

368ede2f7f0aa0ff917f4db9c1728d38.png

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) ?#下圖

復制代碼

e62b2526c6fc3efbaefd33bd58b5c805.png

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

關注我的公眾號 「Python讀財」,后臺回復「py」即可獲取Python學習資源禮包,還有Python學習交流群哦!

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/186048.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息