Seaborn入門系列(二)——barplot countplot pointplot

2019年12月02日07:55:07 科技 1560

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

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

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


barplot(條形圖)

條形圖表示數值變量與每個矩形高度的中心趨勢的估計值,並使用誤差線提供關於該估計值附近的不確定性的一些指示。具體用法如下:

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)

接下來還是通過具體例子學習裡面的一些參數的用法:

%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="12")
sns.set_style("whitegrid")

本篇文章所採用的數據集內容如下

data.head(5) #data是一個dataframe

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

x,y(str):dataframe中的列名

data:dataframe或者數組

sns.barplot(x="color", y="age", data=data)

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

關於圖像的解釋:Seaborn會對”color“列中的數值進行歸類後按照estimator參數的方法(默認為平均值)計算相應的值,計算出來的值就作為條形圖所顯示的值(條形圖上的誤差棒則表示各類的數值相對於條形圖所顯示的值的誤差

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

sns.barplot(x="color" y="age",data=data,hue="gender")

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

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

fig,axes=plt.subplots(1,2)
sns.barplot(x="gender", y="age", data=data, ax=axes[0])
sns.barplot(x="gender", y="age", data=data, ax=axes[1], order=["女","男"])

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

estimator:<function name>控制條形圖取每列數據的什麼值

fig,axes=plt.subplots(1,2)
#左圖,默認為平均值
sns.barplot(x="gender", y="age", data=data, ax=axes[0])
#右圖,中位數
sns.barplot(x="gender", y="age", estimator=np.median, data=data, ax=axes[1])

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

ci(float): 置信區間(在0-100之間),若填寫"sd",則誤差棒用標準誤差。(默認為95)

fig,axes=plt.subplots(1,2)
sns.barplot(x="color", y="age", data=data, ci=0, ax=axes[0]) #左圖
sns.barplot(x="color", y="age", data=data, ci="sd", ax=axes[1]) #右圖

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

capsize(float):設置誤差棒帽條(上下兩根橫線)的寬度

fig,axes=plt.subplots(1,2)
sns.barplot(x="color", y="age", data=data, ax=axes[0], capsize=.2) #左圖
sns.barplot(x="color", y="age", data=data, ax=axes[1], capsize=.5) #右圖

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

palette:調色板,控制不同的顏色style

fig,axes=plt.subplots(2,1)
sns.barplot(x="color", y="age", data=data, ax=axes[0]) #上圖
sns.barplot(x="color", y="age", data=data, palette="Set3", ax=axes[1]) #下圖

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

X,Y軸互換

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

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞



countplot入門

一個計數圖可以被認為是一個分類直方圖,而不是定量的變量。基本的api和選項與barplot()相同,因此您可以比較嵌套變量中的計數。(工作原理就是對輸入的數據分類,條形圖顯示各個分類的數量)具體用法如下:

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)

註:countplot參數和barplot基本差不多,可以對比着記憶,有一點不同的是countplot中不能同時輸入x和y,且countplot不存在置信區間。

根據例子體驗一下:

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

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

fig,axes=plt.subplots(1,2)
sns.countplot(x="gender", hue="smoker", data=data, ax=axes[0]) #左圖
sns.countplot(y="gender", hue="smoker", data=data, ax=axes[1]) #右圖

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

fig,axes=plt.subplots(2,1)
sns.countplot(x="color", data=data, ax=axes[0]) #上圖
sns.countplot(x="color", data=data, palette="Set3", ax=axes[1]) #下圖

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞


pointplot入門

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

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)

下面繼續使用之前的數據集進行繪圖,和barplot相同的參數就不再具體演示,重點演示pointplot獨有的。

sns.set() #初始化seaborn配置
sns.set_style("darkgrid") #灰色網格背景
sns.pointplot(x="smoker", y="age", data=data)

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

圖中的點為這組數據的平均值點,豎線則為置信區間,默認兩個均值點會相連接,若不想顯示,可以通過join參數實現:

sns.pointplot(x="smoker", y="age", data=data, join=False)

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

之前我們演示過barplot的hue參數,現在我們看一下pointplot的hue參數:

sns.pointplot(x="smoker", y="age", data=data, hue="gender")

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

我們可以看到兩個類別的誤差棒重疊在了一起,使數據觀測不清晰。怎麼解決這個問題呢?pointplot的dodge參數可以使重疊的部分錯開:

sns.pointplot(x="smoker", y="age", data=data, hue="gender", dodge=True)

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

接下來我們對均值點的樣式(由參數markers控制)和相同色調的點之間的連線(由參數linestyles控制)做一下改動。

sns.pointplot(x="smoker", y="age", data=data, hue="gender", dodge=True,
markers=["*","x"], linestyles=["-.","--"])

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

其他樣式請參考matplotlib線條樣式

將X,Y軸互換

sns.pointplot(x="age",y="color",data=data)

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

通過color參數控制不同單層圖的顏色

sns.pointplot(x="age",y="color",data=data,color="#bb3f3f")

Seaborn入門系列(二)——barplot countplot pointplot - 天天要聞

還有其他效果和barplot一樣的參數,大家可以動手自己試一下。以上內容是我結合官方文檔和自己的一點理解寫成的,有什麼錯誤大家可以指出來並提提意見共同交流、進步,也希望我寫的這些能夠給閱讀完本文的你或或少的幫助!

科技分類資訊推薦

引領科技豪華MPV新風尚 第二代騰勢D9西安車展亮相 - 天天要聞

引領科技豪華MPV新風尚 第二代騰勢D9西安車展亮相

兼具宜商氣度與家用溫情的科技豪華旗艦MPV,第二代騰勢D9迎來西安地區正式亮相。新車依託全球新能源MPV冠軍底蘊,以第二代刀片電池、雙閥雲輦-C、天神之眼5.0智駕等核心技術全面升級,兼顧商務體面與家庭舒適,為西北高端用戶帶來一站式全能出行解決方案。
採購禁入!科華數據材料造假被拒門外 - 天天要聞

採購禁入!科華數據材料造假被拒門外

本報(chinatimes.net.cn)記者胡雅文 北京報道這家趕上AI算力風口的公司,因投標材料造假,被相關採購方列入禁入名單兩年,其此前提出的複議申請也被正式駁回。相關採購平台近日發布公告,明確駁回科華數據股份有限公司(下稱“科華數據”,002335.SZ)此前提交的複議申請。早在一年前,科華數據已被認定在“信息通信樞紐...
快評樂道L80:15萬元級買大五座,這波值得沖? - 天天要聞

快評樂道L80:15萬元級買大五座,這波值得沖?

日前,樂道L80正式發布並開啟預售,其整車購買預售價為24.58萬元起,租電購買預售價則低至15.98萬元起。面對大型SUV市場“細分再細分”之競爭趨勢,這款樂道年度重磅新車都有哪些優勢?又能否成為“大五座SUV革新之作”?下面,圈哥就帶大家全方位感受。
成都直擊凱威德:純電全尺寸SUV的張揚與大氣 - 天天要聞

成都直擊凱威德:純電全尺寸SUV的張揚與大氣

4月22日,凱迪拉克以奧斯卡級盛典規格,將上海保利大劇院點亮為璀璨舞台,在品牌代言人倪妮與全場嘉賓的共同見證下,凱迪拉克全尺寸純電公路旗艦——凱威德耀然上市。新車共推出長續航四驅Pro、高性能四驅Ultra兩款配置,官方售價區間為46.88萬-50.88萬元。