Python--Seaborn繪圖和可視化--基本語法

  博客地址:http://www.cnblogs.com/yudanqu/python

 

 

  Seaborn是對matplotlib的extend,是一個數據可視化庫,提供更高級的API封裝,在應用中更加的方便靈活。下面我簡單介紹一下他的用法,實際應用的時候,能夠直接從文檔中查找這個庫,這時候使用就很快捷了。dom

 

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

   二、柱狀圖和熱力圖

   三、設置圖形顯示效果

   四、調色功能

 

  老樣子,首先將使用它所須要的庫導入進來,固然,其中包括numpy之類的是爲了演示它的功能才導入的,你們要先理解一下每一個庫的做用。函數

1 import numpy as np
2 import pandas as pd
3 import matplotlib.pyplot as plt
4 from pandas import Series,DataFrame
5 import seaborn as sns

一、直方圖和密度圖

  若是在交互式環境中,能夠經過%matplotlab來解決每次經過plt.show()來顯示圖像(本人在ipython中,貌似jupyter中%matplotlib inline等等)post

# matplotlib

1 s1 = Series(np.random.randn(1000)) # 生成1000個點的符合正態分佈的隨機數
2 plt.hist(s1) # 直方圖,也能夠經過plot(),修改裏面kind參數實現
3 s1.plot(kind='kde') # 密度圖

# 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) # 在下方畫出頻率狀況

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

二、柱狀圖和熱力圖

  (1)下載實驗數據:code

1 df = sns.load_dataset('flights') # 在線下載一個數據用於實驗,在sns.load_dataset()函數裏有不少的數據,想了解更多的能夠到GitHub中找到源碼,你就會很清楚了

  咱們能夠先看一下里面的數據,能夠看到,這是一個航空的數據,裏面有年、月和乘客數量,接下來咱們就要在這份數據上進行分析。blog

  (2)咱們能夠經過透視表來先對這份數據進行一下處理:ip

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

  你們能夠本身試一下,這樣生成的結果是以年爲columns,以月爲index,表內數據爲對應的乘客數量。文檔

  (3)繪製柱狀圖get

1 s = df.sum()
2 # 經過matplotlib繪出圖形
3 s.plot(kind='bar')
4 # 經過seaborn繪出圖形
5 sns.barplot(x=s.index,y=s.values)

  

  (4)繪製熱力圖

1 df.plot() # 線性的顯示數據狀況
2 sns.heatmap(df) # 生成熱力圖
3 # sns.heatmap(df,annot=True,fmt='d') # annot參數是指顯示數據,fmt='d'是指以整數形式顯示

三、設置圖形顯示效果

(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 def sinplot():
5     plt.plot(x,y1)
6     plt.plot(x,y2)
7 
8 sinplot() # 以matplotlib顯示,生成兩個函數圖像

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() # 設置風格爲空,即清空本身定義的,恢復到默認的時候

(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() # 恢復到默認

  圖像貌似同樣,但並非沒有成功,只是變化比較細微,真正用到的時候就能夠體會到了。

四、調色功能

1 # 先繪製一個圖像
2 def sinplot1():
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()

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)

  博客地址:http://www.cnblogs.com/yudanqu/

相關文章
相關標籤/搜索