天天看點

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

Seaborn是對matplotlib的extend,是一個資料可視化庫,提供更進階的API封裝,在應用中更加的友善靈活。下面我簡單介紹一下他的用法,實際應用的時候,可以直接從文檔中查找這個庫,這時候使用就很快捷了。

提要:1、直方圖和密度圖

2、柱狀圖和熱力圖

3、設定圖形顯示效果

4、調色功能

老樣子,首先将使用它所需要的庫導入進來,當然,其中包括numpy之類的是為了示範它的功能才導入的,大家要先了解一下每個庫的作用。

1 importnumpy as np2 importpandas as pd3 importmatplotlib.pyplot as plt4 from pandas importSeries,DataFrame5 import seaborn as sns

1、直方圖和密度圖

如果在互動式環境中,可以通過%matplotlab來解決每次通過plt.show()來顯示圖像(本人在ipython中,貌似jupyter中%matplotlib inline等等)

# matplotlib

1 s1 = Series(np.random.randn(1000)) #生成1000個點的符合正态分布的随機數

2 plt.hist(s1) #直方圖,也可以通過plot(),修改裡面kind參數實作

3 s1.plot(kind='kde') #密度圖

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

# seaborn

1 sns.distplot(s1,hist=True,kde=True,rug=True) #前兩個預設就是True,rug是在最下方顯示出頻率情況,預設為False

2 #bins=20 表示等分為20份的效果,同樣有label等等參數

3 sns.kdeplot(s1,shade=True,color='r') #shade表示線下顔色為陰影,color表示顔色是紅色

4 sns.rugplot(s1) #在下方畫出頻率情況

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

給出兩種方式通過最基本的方式畫出來的效果,怎麼樣,是不是發現seaborn很強大。

2、柱狀圖和熱力圖

(1)下載下傳實驗資料:

1 df = sns.load_dataset('flights') #線上下載下傳一個資料用于實驗,在sns.load_dataset()函數裡有很多的資料,想了解更多的可以到GitHub中找到源碼,你就會很清楚了

我們可以先看一下裡面的資料,可以看到,這是一個航空的資料,裡面有年、月和乘客數量,接下來我們就要在這份資料上進行分析。

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

(2)我們可以通過透視表來先對這份資料進行一下處理:

1 df = df.pivot(index='month',columns='year',values='passengers') #生成一個透視表,得到一個以年、月為軸的二維資料表

大家可以自己試一下,這樣生成的結果是以年為columns,以月為index,表内資料為對應的乘客數量。

(3)繪制柱狀圖

1 s =df.sum()2 #通過matplotlib繪出圖形

3 s.plot(kind='bar')4 #通過seaborn繪出圖形

5 sns.barplot(x=s.index,y=s.values)

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

(4)繪制熱力圖

1 df.plot() #線性的顯示資料情況

2 sns.heatmap(df) #生成熱力圖

3 #sns.heatmap(df,annot=True,fmt='d') # annot參數是指顯示資料,fmt='d'是指以整數形式顯示

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法
python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

3、設定圖形顯示效果

(1)axes_style and set_style

1 x = np.linspace(0,14,100)2 y1 =np.sin(x)3 y2 = np.sin(x+2)*1.25

4 defsinplot():5 plt.plot(x,y1)6 plt.plot(x,y2)7

8 sinplot() #以matplotlib顯示,生成兩個函數圖像

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

1 #seaborn的5種裝飾風格

2 styles = ['darkgrid','dark','white','whitegrid','tricks'] #顔色代表背景顔色,grid代表是否有網格

3 sns.set_style(style[0]) #進行裝飾,括号内可以直接寫裝飾風格

4 sinplot() #經過修飾之後的圖像

5

6 sns.axes_style() #顯示目前主題的内容,這些資料都可以修改微調

7 #更改的時候就将其資訊的以字典形式複制到set_style()裡,當做參數來修改(注意是以字典的形式)

8 sns.set() #設定風格為空,即清空自己定義的,恢複到預設的時候

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

(2)plotting_context() and set_context()

1 context = ['paper','notebook','talk','poster'] #seaborn本身定義好的

2 sns.set_context('paper',rc={'grid.linewidth':3.0}) #rc參數

3 sinplot()4

5 sns.plotting_context() #顯示出目前狀态的資料

6 sns.set() #恢複到預設

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

圖像貌似一樣,但并不是沒有成功,隻是變化比較細微,真正用到的時候就可以體會到了。

4、調色功能

1 #先繪制一個圖像

2 defsinplot1():3 x = np.linspace(0,14,100)4 plt.figure(figsize=(8,6)) #圖像比較小時,通過這個函數更改大小

5 for i in range(4):6   plt.plot(x,np.sin(x+i)*(i+0.75),label='sin(x+%s)*(%s+0.75)' %(i,i))7 plt.legend()8 sinplot1()

python繪圖庫seaborn_Python--Seaborn繪圖和可視化--基本文法

1 #引入seaborn

2 sns.color_palette() #使用調色闆

3 #不傳入參數傳回目前使用的調色闆(RGB)

4 sns.palplot(sns.color_palette()) #畫出調色闆,參數為上面的調色闆

接下來,我們就要調整我們的調色闆了

1 pal.style = ['deep','nuted','pastel','bright','dark','colorblind'] #seaborn預設定義的調色闆

2

3 #第一種設定畫闆方式

4 sns.set_palette(sns.color_palette('dark')) #設定色闆

5 sns.set() #恢複預設風格

6

7 #第二種設定畫闆方式,并且最後恢複到預設

8 with sns.color_palette():9 sinplot1() #在内部調整畫闆輸出圖形,當with結束時,則恢複預設

調色闆裡的顔色是定義好的,那麼如果我們将要繪制的圖形包括很多的函數,需要更多的顔色,該怎麼辦呢。

1 #預設提供的色闆數量是固定的,如果圖像是更多的函數,那麼顔色将循環色闆中的風格。如果想不使他顔色有相同,可以通過sns.color_palette()來修改

2 sns.color_palette([(0.5,0.2,0.6),(0.3,0.3,0.4)]) #因為色闆是以清單的形式存儲的,裡面的每種風格以元組的形式存在是以需要用[()]

3

4 #第二種增加色闆顔色的方法

5 sns.color_palette('hls',8) #hls方法,後面寫參數8,即生成有8種不同顔色的色闆

作者:漁單渠(yudanqu)