數據可視化工具matplotlib複習總結

本篇文章給大家講述關於數據可視化工具matplotlib的一些基礎知識,標題如下:

  1. 基本介紹
  2. figure和subplot
  3. 線圖
  4. 散點圖和直方圖
  5. 圖表裝飾項
  6. 3維散點圖
  7. pandas中的繪圖函數
  8. 小結

基本介紹

Matplotlib是一個Python 2D繪圖庫,可以在各種平台上以各種硬拷貝格式和互動式環境生成出版質量數據。Matplotlib可用於Python腳本,PythonIPython shelljupyter筆記本,Web應用程序伺服器和四個圖形用戶界面工具。我們一般會用以下方法引入Matplotlib

figure和subplot

matplotlib畫板一般由一下部分組成

figurematplotlib的圖像都位於Figure對象中,你可以用一下方式去創建一個新的Figure,在使用ipython的時候,會彈出一個空窗口,其他情況下,必須在畫板上畫點什麼在調用plt.show()才能出現畫板

上面代碼中,第一參數是傳給窗口一個id,如果存在則使其活躍,否則就創建並返回它。並且figure還可以接受一個元組來設置畫板大小。

我們不能對空Figure繪圖,必須用add_subplot創建一個或多個subplot才行。

ax1為例前兩個參數表示把一個畫板分割成2x21表示分割成4個格子中的第一個。其他同理。

上圖就是創建的subplot,第一行的分別是ax1ax3,第二行的是ax2。如果這時你發出繪圖指令,matplotlib這時就會在你最後一個用過的subplot中(沒有則創建)繪製。

默認情況下在subplot外圍會留下一下邊距,使用一下方法可以調整這些間隔,但是有可能會導致坐標軸的標籤重疊。

上面的代碼會把所有的間距都去掉

線圖

由於最後創建的是ax3,因此線圖會在ax3上繪製

其中plot表示畫的是線圖,k--表示畫黑色虛線圖。k表示黑色,--表示虛線,你也可以更明確的給linestylecolor傳入參數,有關於linestyle的種類,官方文檔給了詳細的說名,color不僅接受英文,也可以用16進位字元串、RGB或RGBA元祖來指定顏色。線圖可以接受兩個數組分別代表坐標X和坐標Y,,當然你也可以直接輸入一個數組表示Y,那麼元素在數組的索引會變成你的X坐標。並且我們可以設置線條的樣式,例如用線條的形狀或者是顏色。

散點圖和直方圖

當然我們也可以直接用subplot的引用去在對應的位置畫圖。

scatter是散點圖,接受兩個數組作為xy坐標,scatter這裡還可以指定點的形狀和顏色。alpha表示的是點的透明度。

hist是直方圖他接受一個數組作為數據,bins表示直方圖的總個數,個數越多,條形帶越緊密。

除此以外matplotlib還有很多種圖,例如餅圖、條形圖、矢量場等等,這些圖的繪製可以參考官方文檔。

圖表裝飾項

一個圖表除了我們要繪製的圖像外,還需要有標籤、坐標軸、圖例等裝飾。以下是常用api,調用是分帶參數和不帶參數兩種:

  • 不帶參數:則返回當前參數值
  • 帶參數:設置參數值

對y軸的相關方法同理。

我們可以在創建繪圖函數中的傳入label參數,然後調用ax.legend()plt.legend()自動創建圖例。legend有一個參數loc一般令loc=『best』即可,它會自動選擇最不礙事的位置。

除了圖例以外,我們有時還需要去繪製一些自定的註解(文本、箭頭或其他圖形)

我們可以使用.text繪製標籤

需要傳入標籤顯示的坐標以及,字元串,可選的有標籤的樣式。

具體樣式可以在官方文檔中查看

3維散點圖的繪製

三維圖像的繪製過程如下

以上代碼就可創建一個三維工程,接下來的繪圖和二維類似,因為是三維因此繪圖需要傳入xyz坐標即可。

例如以上代碼就可以在三維坐標上繪製四個點。

pandas中的繪圖函數

pandas中的SeriesDataFrame都有生成各類圖表的plot方法,默認生成線圖。在繪製過程中Series對象的索引會變為X軸,但你可以通過use_index = False去禁用該功能。

參數介紹

pandas繪圖有很多和matplotlib一樣的設置樣式的參數,除此以外,pandas的繪圖參數還有

還有專用於DataFrame的參數

線圖

密度圖

直方圖

垂直的直方圖

小結

matplotlib的使用方法很簡單,有什麼參數不懂的可以去官方文檔查看即可。在機器學習中由於數據維度很高一般是沒辦法繪製出樣本點的分布,因此將樣本點降至三維,在空間中查看樣本點的分布。總而言之,matploylib是一個非常強大的數據可視化工具,它還有很多功能引用沒有在本文中介紹,有興趣的朋友可以自行去學習

本文首發於公眾號「AI遇見機器學習」,更多乾貨可搜索[mltoai]或直接公眾號名,歡迎關注!

推薦閱讀:

python是對面向對象編程友好的語言嗎?有沒有改進空間?
Python 網路爬蟲入門(四)— 破解pexels高清原圖 (附源碼)
Python · 樸素貝葉斯(三)· GaussianNB
Python數據處理 II:數據的清洗(預處理)
如何回答同學知道我在學 Python 時問我「會盜 QQ 號嗎」?

TAG:Python | 机器学习 |