Python可視化庫Matplotlib繪圖入門詳解
- 2019 年 10 月 11 日
- 筆記
Matplotlib是Python的繪圖庫,其中的pyplot包封裝了很多畫圖的函數。
Matplotlib.pyplot 包含一系列類似 MATLAB 中繪圖函數的相關函數。每個 Matplotlib.pyplot 中的函數會對當前的圖像進行一些修改,例如:產生新的圖像,在圖像中產生新的繪圖區域,在繪圖區域中畫線,給繪圖加上標記,等等…… Matplotlib.pyplot 會自動記住當前的圖像和繪圖區域,因此這些函數會直接作用在當前的圖像上。


繪製線圖

plt.plot() 函數可以用來繪製線型圖:

1
基本用法
指定x和y
- plt.plot(x,y)
默認參數,x 為 0~N-1
- plt.plot(y)
因此,在上面的例子中,我們沒有給定 x 的值,所以其默認值為 [0,1,2,3]。
分別傳入 x 和 y:

2
字符參數
和 MATLAB 中類似,我們還可以用字符來指定繪圖的格式。
表示顏色的字符參數有:

表示類型的字符參數有:

例如我們要畫出紅色圓點:

可以看出,有兩個點在圖像的邊緣,因此,我們需要改變軸的顯示範圍。
3
顯示範圍
與 MATLAB 類似,這裡可以使用 axis 函數指定坐標軸顯示的範圍:
plt.axis([xmin, xmax, ymin, ymax])

4
傳入Numpy參數
之前我們傳給 plot 的參數都是列表,事實上,向 plot 中傳入 numpy 數組是更常用的做法。事實上,如果傳入的是列表,matplotlib 會在內部將它轉化成數組再進行處理:

5
子圖
figure() 函數會產生一個指定編號為 num 的圖:
plt.figure(num)
這裡,figure(1) 其實是可以省略的,因為默認情況下 plt 會自動產生一幅圖像。
使用 subplot 可以在一副圖中生成多個子圖,其參數為:
plt.subplot(numrows, numcols, fignum)
當 numrows * numcols < 10 時,中間的逗號可以省略,因此 plt.subplot(211) 就相當於 plt.subplot(2,1,1)。



繪製柱狀圖

柱狀圖(bar chart),是一種以長方形的長度為變量的表達圖形的統計報告圖,由一系列高度不等的縱向條紋表示數據分佈的情況,用來比較兩個或以上的價值(不同時間或者不同條件),只有一個變量,通常利用於較小的數據集分析。柱狀圖亦可橫向排列,或用多維方式表達。
繪製每個國家或地區的電影數量的柱狀圖:



繪製散點圖

用兩組數據構成多個坐標點,考察坐標點的分佈,判斷兩變量之間是否存在某種關聯或總結坐標點的分佈模式。
散點圖將序列顯示為一組點。值由點在圖表中的位置表示。類別由圖表中的不同標記表示。散點圖通常用於比較跨類別的聚合數據。
根據電影時長和電影評分繪製散點圖:



繪製餅圖

餅圖英文學名為Sector Graph, 有名Pie Graph。常用於統計學模塊。2D餅圖為圓形,手畫時,常用圓規作圖。
僅排列在工作表的一列或一行中的數據可以繪製到餅圖中。餅圖顯示一個數據系列中各項的大小與各項總和的比例,數據點顯示為整個餅圖的百分比。
函數原型:
pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=None, radius=None)
參數: x (每一塊)的比例,如果sum(x) > 1會使用sum(x)歸一化 labels (每一塊)餅圖外側顯示的說明文字 explode (每一塊)離開中心距離 startangle 起始繪製角度,默認圖是從x軸正方向逆時針畫起,如設定=90則從y軸正方向畫起 shadow表示是否陰影 labeldistance label繪製位置,相對於半徑的比例, 如<1則繪製在餅圖內側 autopct 控制餅圖內百分比設置,可以使用format字符串或者format function '%1.1f'指小數點前後位數(沒有用空格補齊) pctdistance 類似於labeldistance,指定autopct的位置刻度 radius 控制餅圖半徑
返回值: 如果沒有設置autopct,返回(patches, texts)
如果設置autopct,返回(patches, texts, autotexts)
根據電影的長度繪製餅圖:



繪製直方圖

直方圖(Histogram)又稱質量分佈圖。是一種統計報告圖,由一系列高度不等的縱向條紋或線段表示數據分佈的情況。一般用橫軸表示數據類型,縱軸表示分佈情況。
直方圖是數值數據分佈的精確圖形表示。這是一個連續變量(定量變量)的概率分佈的估計,並且被卡爾·皮爾遜(Karl Pearson)首先引入。它是一種條形圖。
為了構建直方圖,第一步是將值的範圍分段,即將整個值的範圍分成一系列間隔,然後計算每個間隔中有多少值。這些值通常被指定為連續的,不重疊的變量間隔。間隔必須相鄰,並且通常是(但不是必須的)相等的大小。
直方圖也可以被歸一化以顯示「相對」頻率。然後,它顯示了屬於幾個類別中的每個案例的比例,其高度等於1。
根據電影的評分繪製直方圖:

hist的參數非常多,但常用的就這七個,只有第一個是必須的,其他是可選的。
arr: 需要計算直方圖的一維數組
bins: 直方圖的柱數,可選項,默認為10
normed: 是否將得到的直方圖向量歸一化。默認為0
facecolor: 直方圖顏色
edgecolor: 直方圖邊框顏色
alpha: 透明度
histtype: 直方圖類型,『bar』, 『barstacked』, 『step』, 『stepfilled』
返回值 :
n: 直方圖向量,是否歸一化由參數normed設定
bins: 返回各個bin的區間範圍
patches: 返回每個bin裏面包含的數據,是一個list
