環境
開發工具
VSCode
庫的版本
numpy==1.26.4
matplotlib==3.10.1
ipympl==0.9.7
教材
本書為《Python數據可視化》一書的配套內容,本章為第1章 數據可視化與matplotlib
本文主要介紹了什么是數據集可視化,數據可視化的目的,常見的數據可視化方式,如何選擇正確的可視化圖表,matplotlib的多種API使用以及matplotlib的層次結構等。
參考
政務可視化設計經驗-圖表習慣
數據可視化設計必修課(一):圖表篇
一文講透 | 大屏數據可視化圖表選用指南
第1章 數據可視化與matplotlib
什么是數據可視化
數據可視化旨在借助圖形化的手段,將一組
數據以圖形的形式表示
,并利用數據分析和開發工具發現其中未知信息的處理過程。
可視化其實是一個
抽象
的過程,它可以簡單地理解為將一個不易描述的事物形成一個可感知畫面的過程,也就是從數據空間到圖形空間的映射
。
數據可視化的過程
數據可視化目的
無論原始數據被映射為哪種圖形數據,最終要達到的目的只有一個,便是準確地、高效地、全面地傳遞信息,進而建立起數據間的關系,使人們發現數據間的
規律
和特征
,并挖掘出有價值的信息
,提高數據溝通的效率
。
常見的數據可視化方式
折線圖
柱形圖
條形圖
堆積圖
直方圖
箱型圖
餅圖
散點圖
氣泡圖
誤差棒圖
雷達圖
統計地圖
3D圖表
選擇正確的可視化圖表
數據通常包含4種關系:比較、分布、構成和聯系。
比較:比較關系主要關注數據中各類別或時間變化的情況。
分布:分布關系主要關注不同數值范圍內包含多少數據的情況。
構成:構成關系主要關注各部分與整體占比的情況。
聯系:聯系關系主要關注兩個及兩個以上的變量之間關系的情況。
基于比較關系可選擇的圖表
基于分布關系可選擇的圖表
基于構成關系可選擇的圖表
基于聯系關系可選擇的圖表
不同的劃分方法
常見的數據可視化庫
matplotlib
、seaborn
、ggplot、bokeh、pygal、pyecharts
。
matplotlib庫的簡單使用
matplotlib庫簡介
matplotlib是一個由
John D.Hunter
等人員開發的、主要用于繪制2D圖表的Python庫
。
matplotlib支持numpy、pandas的數據結構
,具有繪制豐富的圖表、定制圖表元素或樣式的功能。 matplotlib 還可用于繪制一些3D圖表
。
matplotlib官網提供了三種API:pyplot API
、object-oriented API
、pylab API
。
pyplot API
pyplot API
是使用pyplot模塊開發的接口,該接口封裝了一系列與MATLAB命令同名的函數
,使用這些函數可以像使用MATLAB命令一樣快速地繪制圖表。
通過pyplot API
繪制圖表的基本思路:
(1)導入pyplot模塊。
(2)調用該模塊的繪圖函數來繪制圖表。
(3)展示圖表。
pyplot API屏蔽了底層中畫布、繪圖區域的創建細節,它會持續跟蹤當前的畫布和繪圖區域
。
import numpy as np
import matplotlib.pyplot as plt # 導入 pyplot 模塊
data = np.array([1, 2, 3, 4, 5]) # 準備數據
plt.plot(data) # 在當前畫布的繪圖區域中繪制圖表
plt.show() # 展示圖表
object-oriented API
object-oriented API是面向對象的接口,該接口封裝了一系列對應圖表元素的類,只有創建這些類的對象并按照隸屬關系組合到一起才能完成一次完整的繪圖。
通過object-oriented API
繪制圖表的基本思路:
(1)導入pyplot模塊。
(2)創建畫布(Figure類的對象)。
(3)在畫布上添加繪圖區域(Axes類的對象)。
(4)調用繪圖方法繪制圖表。
(5)展示圖表。
import numpy as np
import matplotlib.pyplot as plt
data = np.array([1, 2, 3, 4, 5]) # 準備數據
fig = plt.figure() # 創建代表畫布的Figure 類的對象fig
ax = fig.add_subplot(111) # 在畫布fig上添加坐標系風格的繪圖區域ax
ax.plot(data) # 繪制圖表
plt.show() # 展示圖表
pyplot API和 object-oriented API選擇
用戶在使用時可以根據自身的實際情況進行選擇 ,若只是需要
快速地繪制圖表
,可以選擇pyplot API
進行開發;若需要自定義圖表
,可以選擇object-oriented API
進行開發。
matplotlib所繪圖形的層次結構
使用matplotlib繪制的圖形主要由三層組成:
容器層
、圖像層
和輔助顯示層
。
關于
Canvas對象
、Figure對象
、Axes對象
的結構如下圖所示。
Axes對象擁有屬于自己的坐標系,它可以是直角坐標系
,即包含x軸和y軸的坐標系,也可以是三維坐標系
(Axes的子類Axes3D對象),即包含x軸、y軸、z軸的坐標系。