一、matplotlib數據可視化入門


參考來源:《Python數據科學手冊》第4章

URL:https://jakevdp.github.io/PythonDataScienceHandbook/

描述:筆記

目錄:

1、Matplotlib常用技巧

  1.1 導入Matplotlib

  1.2 設置繪圖樣式

  1.3 用不用show()?如何顯示圖形

  1.4 將圖形保存為文件

2、兩種畫圖接口

  2.1 MATLAB風格接口

  2.2 面向對象接口

3、簡易線形圖

  3.1 調整圖形:線條的顏色與風格

  3.2 調整圖形:坐標軸上下限

  3.3 設置圖形標簽

4、簡易散點圖

  4.1 用plt.plot畫散點圖

  4.2 用plt.scatter畫散點圖

  4.3 plot與scatter:效率對比

5、可視化異常處理

  5.1 基本誤差線

  5.2 連續誤差線

6、密度圖與等高線圖

  6.1 三維視圖的可視化

7、頻次直方圖、數據區間划分和分布密度

8、配置圖例

  8.1 選擇圖例顯示的元素

  8.2 在圖例中顯示不同尺寸的點

  8.3 同時顯示多個圖例

9、配置顏色條

  9.1 配置顏色條

  9.2 案例:手寫數字

10、多子圖

  10.1 plt.axes:手動創建子圖

  10.2 plt.subplot:簡易網格子圖

  10.3 plt.subplots:用一行代碼創建網格

  10.4 plt.GridSpec:實現更復雜的排列方式

11、文字與注釋

  11.1 plt.text()

  11.2 坐標變換與文字位置

  11.3 箭頭與注釋

12、自定義坐標軸刻度

  12.1 主要刻度與次要刻度

  12.2 隱藏刻度與標簽

  12.3 增減刻度數量

  12.4 花哨的刻度格式

  12.5 格式生成器與定位器小結

13、Matplotlib自定義:配置文件與樣式表

  13.1 手動配置圖形

  13.2 修改默認配置:rcParams

  13.3 樣式表

14、用Matplotlib畫三維圖

  14.1 三維數據點與線

  14.2 三維等高線

  14.3 線框圖和曲面圖

  14.4 曲面三角剖分

15、用Basemap可視化地理數據

  15.1 地圖投影

  15.2 畫一個地圖背景

  15.3 在地圖上畫數據

  15.4 案例:美國加州城市數據

  15.5 案例:地表溫度數據

16、用Seaborn做數據可視化

  16.1 Seaborn與Matplotlib

  16.2 Seanborn圖形介紹

  16.3 案例:探索馬拉松比賽成績數據

17、參考資料

  17.1 Matplotlib資源

  17.2 其他Python畫圖程序庫

 

1、Matplotlib常用技巧

  1.1 導入Matplotlib

      

  1.2 設置繪圖樣式

            

  1.3 用不用show()?如何顯示圖形

      三種開發環境:腳本、IPython shell 和 IPython Notebook

      在腳本中,使用matplotlib時,顯示圖形必須用plt.show(),plt.show()會啟動一個事件循環(event loop),並找到所有當前可用的圖形對象,然后打開一個或多個交互式窗口顯示圖形,需要注意的是,一個python會話中只能使用一次plt.show(),因此通常都把它放在腳本的最后。

      在ipython shell中,需要啟動matplotlib模式,通過魔法方式%matplotlib啟動。不再需要使用plt.show()。可通過plt.draw()強制更新。

      在ipython notebook中,需要啟動matplotlib模式。

      

  1.4 將圖形保存為文件

      

      

 

 

       

2、兩種畫圖接口

  2.1 MATLAB風格接口

      這種接口最重要的特性是有狀態的(stateful):它會持續跟蹤“當前的”圖形和坐標軸,所有plt命令都可以應用,可用plt.gcf()獲取當前圖形,plt.gca()獲取當前坐標軸。

      缺點:不方便切換子圖。

      

      

  2.2 面向對象接口

      面向對象接口不再受到當前“活動”圖形或坐標軸的限制,而變成了顯式的Figure和Axes的方法。

      

      畫比較復雜的圖形時,對面對象方法會更方便。

3、簡易線形圖

  3.1 調整圖形:線條的顏色與風格

      

      

  3.2 調整圖形:坐標軸上下限

      

 

 

       

      

 

      

 

      

       

 

 

     

  3.3 設置圖形標簽

      

 

 

      

 

      

 

 

       matplotlib陷阱

         

 

       

4、簡易散點圖

  4.1 用plt.plot畫散點圖

       

      

 

 

      

 

 

      

 

 

 

  4.2 用plt.scatter畫散點圖

      

 

 

      

 

 

 

 

 

 

 

  4.3 plot與scatter:效率對比

      

 

 

 

5、可視化異常處理

  5.1 基本誤差線

      

 

 

 

  5.2 連續誤差線

      通過plt.plot與plt.fill_between來解決顯示連續變量的誤差。傳入plt.fill_between的上下限參數畫圖,與通過plt.plot畫的圖形做對比,從而可視化出誤差。    

      

6、密度圖與等高線圖

    在二維圖上用等高線圖或者彩色圖來表示三維數據。

    用plt.contour畫等高線圖、用plt.contourf畫帶有填充色的等高線圖(filled contourplot)的色彩、用plt.imshow顯示圖形。

  6.1 三維視圖的可視化

    等高線圖可以用plt.contour函數來創建,它需要三個參數:x軸、y軸、z軸三個坐標軸的網格數據。x軸和y軸表示圖形中的位置,而z軸將通過等高線的等級來表示。

    

 

 

     當圖形中只使用一種顏色時,默認使用虛線表示負數,使用實線表示正數。

     

 

 

      matplotlib的配色方案可以在ipython中用tab鍵瀏覽plt.cm模塊對應的信息。 

      

 

 

       

      通過顏色條分析:黑色區域是波峰(peak),紅色區域是波谷(valley)。

      說明:顏色的改變是一個離散而非連續的過程,所以看起來不那么干凈  

      

 

 

      

       

7、頻次直方圖、數據區間划分和分布密度

  7.1 頻次直方圖

      

       

 

       以上為將一維數組分為區間創建一維頻次直方圖

  7.2 二維頻次直方圖與數據區間划分

      將二維數組按照二維區間進行切分,來創建二維頻次直方圖。

      

 

   7.3 核密度估計

      核密度估計(kernel density estimation,KDE),評估多維數據分布密度的常用方法。

      

           

8、配置圖例  

    圖例通過離散的標簽表示離散的圖形元素。

  8.1 選擇圖例顯示的元素

    想在可視化圖形中使用圖例,可以為不同的圖形元素分配標簽。

    

 

 

    

 

 

    

 

 

     圖例會默認顯示所有元素的標簽,但是會忽略那些不帶標簽的元素

    

 

 

     

        

  8.2 同時顯示多個圖例

      通過從頭開始創建一個新的圖例藝術家對象(legend artist),然后用底層的(lower-level)ax.add_artist()方法在圖上添加第二個圖例。

      

 

       

     

9、配置顏色條

    對於圖形中由彩色的點、線、面構成的連續標簽,用顏色條來表示的效果比較好。

    在matplotlib中,顏色條是一個獨立的坐標軸,可以指明圖形中顏色的含義。

    

  9.1 配置顏色條

     

 

      可以將顏色條本身僅看做是一個plt.Axes實例,可以適用關於坐標軸和刻度值的格式配置(如plt.clim())

 

10、多子圖

  10.1 plt.axes:手動創建子圖

      函數plt.axes(),默認創建一個標准的坐標軸,填滿整張圖。

      它有一個可選參數,有圖形坐標系統的四個值構成,分別是表示圖形坐標系統的[bottom,left,width,height](底坐標,左坐標,寬度,高度),數值的取值范圍是左下角(原點)為0,右上角為1。

     

      

  10.2 plt.subplot:簡易網格子圖

      

 

 

      

 

 

            

  10.3 plt.subplots:用一行代碼創建網格

      

 

 

       

 

 

      

       plt.subplots()與python索引從0開始的習慣保持一致。

       參數ha是水平對齊方式(horizonal alignment)的縮寫,可為left,right,cente

  10.4 plt.GridSpec:實現更復雜的排列方式

      

  

 

 

11、文字與注釋

  11.1 plt.text()

      通過plt.text()/ax.text()函數手動添加注釋,它們可以在具體的x/y坐標點上放文字。

      plt.text()方法需要一個x軸坐標、一個y軸坐標、一個字符串和一些可選參數,比如文字的顏色、字號、風格、對其方式以及其它文字屬性。

  11.2 坐標變換與文字位置

      

 

 

       

  11.3 箭頭與注釋

      函數plt.arrow()創建出的箭頭是SVG向量圖對象,會隨着圖形分辨率的變化而變化。

      函數plt.annotate(),即可以創建文字,也可以創建箭頭(箭頭能夠靈活的配置)

      

12、自定義坐標軸刻度

    每個axes都有xaxis和yaxis屬性,每個屬性包含構成坐標軸的線條、刻度和標簽的全部屬性。

  12.1 主要刻度與次要刻度     

 

 

 

 

  12.2 隱藏刻度與標簽

      

 

 

       

  12.3 增減刻度數量

      

  12.4 花哨的刻度格式

      

 

 

      

 

 

        

 

 

 

      

  12.5 格式生成器與定位器小結

內置的格式生成器與定位器
定位器類 描述
plt.NullLocator 無刻度
plt.FixedLocator 刻度位置固定
plt.IndexLocator 用索引作為定位器(如x=range(len(y)))
plt.LinearLocator 從min到max均勻分布刻度
plt.LogLocator 從min到max按對數分布刻度
plt.MultipleLocator 刻度和范圍都是基數(base)的倍數
plt.MaxNLocator 為最大刻度找到最優位置
plt.AutoLocator (默認)以MaxNLocator進行簡單配置
plt.AutoMinorLocator 次要刻度的定位器
   
格式生成器類 描述
plt.NullFormatter 刻度上無標簽
plt.IndexFormatter 將一組標簽設置為字符串
plt.FixedFormatter 手動為刻度設置標簽
plt.FuncFormatter 用自定義函數設置標簽
plt.FormatStrFormatter 為每個刻度值設置字符串格式
plt.ScalarFormatter (默認)為標量值設置標簽
plt.LogFormatter 對數坐標軸的默認格式生成器

13、Matplotlib自定義:配置文件與樣式表

  13.1 手動配置圖形

  13.2 修改默認配置:rcParams

  13.3 樣式表

      

 

 

        

14、用Matplotlib畫三維圖

    

  

 

 

     

     

  14.1 三維數據點與線

      

      

 

 

    

 

 

 

  14.2 三維等高線

      

 

 

       

 

 

 

  14.3 線框圖和曲面圖

     

 

 

      

 

 

      

 

 

      

 

 

 

    

 

 

     

 

  14.4 曲面三角剖分

      

 

 

       

 

 

     

 

 

 

           

    

 

     

            

15、用Basemap可視化地理數據

  15.1 地圖投影

  15.2 畫一個地圖背景

  15.3 在地圖上畫數據

  15.4 案例:美國加州城市數據

  15.5 案例:地表溫度數據

16、用Seaborn做數據可視化

  16.1 Seaborn與Matplotlib

      

 

 

       

  16.2 Seanborn圖形介紹

    

 

 

 

     

 

 

   

 

 

     

 

 

     

 

 

  

     

 

 

     

 

 

      

  

 

 

 

     

 

 

   

  

 

 

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM