#分享 資料視覺化 - 完全攻略Matplotlib
國立臺灣大學
■為什麼需要資料視覺化 ?
當我們拿到一大堆原始資料時,我們第一時間的心理活動可能會是這樣:
『靠~~ 怎麼還在載入? 到底有幾筆? 到底有那些欄位? 資料與問題有關嗎? 有關的話會是什麼關係? .......... (以下省略萬字小劇場與千頭草泥馬)
當我們冷靜下來後,有幾個問題需要回答:「要如何了解Data」、「應該有那些合理的假設 ?」、「這些假設是否看似成立 ?」,此時通常會使用資料視覺化的方式來幫助自己理解資料、檢核假設成立可能性、與客戶溝通等初步工作。
■ Matplotlib architecture 介紹
Matplotlib 是Python常用的繪圖套件,它有多強大這裡就不再贅述。它的架構由裡至外一共三層:
1. Backend layer
Backend 層由3種類型介面構成:FigureCanvas、Renderer、Event
這層屬於一種interface, 主要是定義各種繪圖所需要統一介面,雖然不同的開發環境有各自的實作的方法,但由於介面一致,所以對於一般開發者而言,它們使用matplotlib的方法是一樣的。
2. Artist layer
Artist Layer有兩種類型:primitives 和containers。
primitives 主要是要處理我們在畫布上欲繪製的標準圖形對象,包括Line2D、Rectangle、Text、AxesImage等,containers是處理圖像放置的位置,例如Figure, Subplot, and Axes。所以Artist Layer會定義圖形由那些子圖組成的,以及物體在坐標系(Axes)中的相對位置。
3. Scripting layer
腳本層(Scripting Layer)可以簡化及加速圖形的建立與使用,也是大多數開發者最常使用的部分,但Scripting Layer卻是以用戶的角度來簡化與其他層一起工作的任務。只要導入 matplotlib.pyplot 就可以開始使用,非常方便。
■ 圖解Matplotlib的重要組件
Matplotlib的各個元件關係可以用下列的樹狀方式表示:
在 matplotlib中, 全部圖像都屬於 Figure 物件管理。在 Figure 中可以包含一個或者多個 Axes 物件。每個 Axes(ax) 物件都有本身專屬坐標系統的繪圖區域。
所屬關係如下(圖片來自網絡):
我們用個圖例來具體的說明
◆ 圖例一
eg. Title 為圖像標題,Axis(Xaxis / Yaxis) 為坐標軸, Label 為坐標軸標註,Tick 為刻度線,Tick Label 為刻度標註。
◆ 圖例二

■ 常見的圖表與其使用情境
1.這邊直接提供幾個經典的範例, 完整的範例請參考
# Top 50 matplotlib Visualizations – The Master Plots (with full python code)2.了解圖表與使用情境後,我們可以使用matplotlib gallery去選擇我們想繪製的圖表,直copy裡面的sample code來改就好,很方便3.有興趣也可以直接到我的 github 觀看程式碼
當我們了解Matploblib的架構後,搭配範例程式基本上就可以畫出各種炫酷的圖表,而當你拿著視覺化的資料侃侃(唬)而談(爛)時,相信聽眾對你的專業觀感也會更為加分。
■ 推薦閱讀
Michael翔 - Matplotlib 知識點整理







