微信公衆號:「Python讀財」
若有問題或建議,請公衆號留言
Seaborn是基於matplotlib的Python可視化庫。 它提供了一個高級界面來繪製有吸引力的統計圖形。Seaborn實際上是在matplotlib的基礎上進行了更高級的API封裝,從而使得做圖更加容易,不須要通過大量的調整就能使你的圖變得精緻。api
注:全部代碼均在IPython notebook中實現數組
條形圖表示數值變量與每一個矩形高度的中心趨勢的估計值,並使用偏差線提供關於該估計值附近的不肯定性的一些指示。具體用法以下:微信
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.rc("font",family="SimHei",size="12") #用於解決中文顯示不了的問題 sns.set_style("whitegrid")
本篇文章所採用的數據集內容以下字體
data.head(5) #data是一個dataframe
x,y(str)
:dataframe中的列名spa
data
:dataframe或者數組3d
sns.barplot(x="color",y="age",data=data)
關於圖像的解釋:Seaborn會對」color「列中的數值進行歸類後按照estimator參數的方法(默認爲平均值)計算相應的值,計算出來的值就做爲條形圖所顯示的值(條形圖上的偏差棒則表示各種的數值相對於條形圖所顯示的值的偏差)code
hue(str)
:dataframe的列名,按照列名中的值分類造成分類的條形圖blog
sns.barplot(x="color",y="age",data=data,hue="gender")
order
, hue_order (lists of strings)
:用於控制條形圖的順序ci
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=["女","男"])
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]) #右圖,中位數
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]) #右圖
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) #右圖
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]) #下圖
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]) #右圖
一個計數圖能夠被認爲是一個分類直方圖,而不是定量的變量。基本的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]) #右圖
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]) #右圖
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.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(font_scale) #初始化seaborn配置,並設置字體大小 sns.set_style("darkgrid") #灰色網格背景 sns.pointplot(x="smoker",y="age",data=data)
圖中的點爲這組數據的平均值點,豎線則爲偏差棒,默認兩個均值點會相鏈接,若不想顯示,能夠經過join
參數實現:
sns.pointplot(x="smoker",y="age",data=data,join=False)
以前咱們演示過barplot的hue
參數,如今咱們看一下pointplot
的hue
參數:
sns.pointplot(x="smoker",y="age",data=data,hue="gender")
咱們能夠看到兩個類別的偏差棒重疊在了一塊兒,使數據觀測不清晰。怎麼解決這個問題呢?pointplot的dodge
參數可使重疊的部分錯開:
sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True)
接下來咱們對均值點的樣式(由參數markers
控制)和相同色調的點之間的連線(由參數linestyles
控制)作一下改動。
sns.pointplot(x="smoker",y="age",data=data,hue="gender",dodge=True,markers=["*","x"],linestyles=["-.","--"])
其餘樣式請參考matplotlib線條樣式
將X,Y軸互換
sns.pointplot(x="age",y="color",data=data)
經過color
參數控制不一樣單層圖的顏色
sns.pointplot(x="age",y="color",data=data,color="#bb3f3f")
還有其餘效果和barplot同樣的參數,你們能夠動手本身試一下。以上內容是我結合官方文檔和本身的一點理解寫成的,有什麼錯誤你們能夠指出來並提提意見,共同交流、進步,也但願我寫的這些可以給閱讀完本文的你或或少的幫助!
關注個人公衆號「Python讀財」,後臺回覆「py」便可獲取Python學習資源禮包,還有Python學習交流羣哦!