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