Python matplotlib繪圖:figure和axes

應用篇

上次介紹了matplotlib是什麼。這次要介紹的是matplotlib的基礎概念以及figure和axes。

用matplotlib畫圖的基本順序

當我們要利用matplotlib來畫圖時,要注意到這個圖是由下面兩個要素構成的。

figure

axes

這兩個是使用matplotlib時的基礎。

figure是什麼

首先來介紹figure。官方在介紹figure的時候是說「The top level container for all the plot elements.(所有圖的最頂層的元素)」,一開始的時候只要把figure想像成一個小視窗就可以了。另外在儲存圖片的時候都使以figure為單位。大部分的場合figure只要有1就足夠了。

axes是什麼

接著是在製作圖形上最重要的object:「axes」。axes一般情況是指橫軸或者縱軸,但是在matplotlib中只要把axes想成是一個圖形就可以了。另外,在一個figure之中可以設定複數個axes。也可以把axes省略成ax,因此才會在代碼中看到ax。

基本操作步驟

這邊會介紹畫圖時的基本步驟。雖然可能每個人有自己習慣的順序,不過對於初學者來說可以先按照下面的步驟來畫圖會比較簡單。

  1. 製作figure
  2. 在製作好的figure上製作axes,並且選取位置
  3. 在axes中儲存畫圖所需要的數據以及情報。
  4. 顯示圖或是儲存

figure和axes

到目前為止可能會覺得有點複雜,接下來我們來實際操作看看,並且理解figure和axes的功能。

顯示一個圖

首先我們在一個figure上面製作一個axes,並且以圖的方式顯示。下面代碼“#”的後面的部分都是代碼的說明。

import matplotlib.pyplot as plt

# 1.製作figure
fig = plt.figure()

# 2.在1.的figure上製作一個axes
ax_1 = fig.add_subplot(1, 1, 1)

# 3.將圖的數據儲存在axes中
X = [0, 1, 2]
Y = [3, 4, 5]
ax_1.plot(X, Y)

# 4.顯示圖
plt.show()

執行了上面的代碼之後就會出現下面的圖。

下次會說明如何在圖上加上圖例以及圖表名稱等等的功能。以及會簡單說明fig.add_subplot(1, 1, 1)這段代碼的意思。

同時顯示複數個圖

在這邊我們要在一個figure中設定複數個axes。在這邊我們想像figure是一個X行Y列的矩陣,並且我們要在這分割的矩陣之中設定axes。

例如我們在一個X行Y列的矩陣中的第N個位置設定axes的話,我們可以將代碼寫成下面這樣。

ax_N = fig.add_subplot(X, Y, N)

接著我們試著在一個figure中設定3個axes。可以想像成在一個視窗中製作三張圖。

import matplotlib.pyplot as plt

#製作figure
fig = plt.figure()

# 1x3的矩陣的第1個位置中設定axes
ax_1 = fig.add_subplot(1, 3, 1)
ax_1.set_title('1')  #圖的標題

# 1x3的矩陣的第2個位置中設定axes
ax_2 = fig.add_subplot(1, 3, 2)
ax_2.set_title('2')  #圖的標題

# 1x3的矩陣的第3個位置中設定axes
ax_3 = fig.add_subplot(1, 3, 3)
ax_3.set_title('3')  #圖的標題

#顯示圖
plt.show()

執行上面的代碼之後就會出現下面的圖,1行3列的矩陣。這邊的圖形的大小當然都可以在另外做設定,之後的文章會再詳細說明。

這個功能在數據分析製作圖表上非常的方便!

顯示複數個figure

接著我們來同時製作複數個figure。也就是同時顯示複數個視窗

import matplotlib.pyplot as plt

# 1.製作figure
fig_1 = plt.figure()
# 2.在1.的figure上製作一個axes
ax_1 = fig_1.add_subplot(1, 1, 1)
# 3.將圖的數據儲存在axes中
X = [0, 1, 2]
Y = [3, 4, 1]
ax_1.plot(X, Y)

# 1.製作figure
fig_2 = plt.figure()
# 2.在1.的figure上製作一個axes
ax_2 = fig_2.add_subplot(1, 1, 1)
# 3.將圖的數據儲存在axes中
X = [2, 3, 6]
Y = [2, 1, 2]
ax_2.plot(X, Y)

# 4.顯示圖
plt.show()

執行了上面的代碼之後就會出現像下面的兩個視窗。他們分別是點(0, 3), (1, 4), (2, 1)所連成的圖以及點(2, 2), (3, 1), (6, 2)所連成的圖。

下一次會對axes做更詳細的說明,也會介紹今天用到的add_subplot這個代碼所代表的意思!

留言