【matplotlib基礎】--畫布

2023-08-30 12:01:15

Matplotlib 庫是一個用於資料視覺化和繪圖的 Python 庫。
它提供了大量的函數和類,可以幫助使用者輕鬆地建立各種型別的圖表,包括直方圖、箱形圖、散點圖、餅圖、條形圖和密度圖等。

使用 Matplotlib 的過程中,遇到的難點並不在於繪製各類的圖形,因為每種圖形都有其對應的API。
難點在於對繪製的圖形進行調整,這些調整包括:

  1. 圖形的大小
  2. 多個圖形的組合
  3. 座標軸的方向,刻度的精度
  4. 圖形的顏色和字型

等等。

進行這些調整需要對 Matplotlib 的繪圖機制和其中的主要元素有個整體的瞭解。
本篇首先整體介紹下Matplotlib繪製的圖形中的主要元素,然後重點介紹下其中第一個重要的元素--畫布

1. 主要元素

下面繪製一個簡單的圖形來演示Matplotlib繪圖時的主要元素。

import numpy as np

import matplotlib
import matplotlib.pyplot as plt

%matplotlib inline

#繪製一個展示主要元素的圖
x = np.array(range(0, 8))
y1 = np.sin(x)

fig = plt.figure()
fig.set_size_inches(10,4)
fig.set_facecolor('lightgreen')
fig.suptitle("整個圖形的總標題")
fig.subplots_adjust(wspace=0.3)

ax1 = fig.add_subplot(121)
ax1.plot(x, y1)
ax1.set_title("圖1 標題")
ax1.set_xlabel("圖1--x軸")
ax1.set_ylabel("圖1--y軸")

ax2 = fig.add_subplot(122)
y2 = np.cos(x)
ax2.plot(x, y1)
ax2.plot(x, y2)
ax2.set_title("圖2 標題")
ax2.set_xlabel("圖2--x軸")
ax2.set_ylabel("圖2--y軸")
ax2.legend(labels=["sin", "cos"])

fig.show()


上例中,我們繪製了2個子圖。
主要的元素包括,圖形的大小,圖形的標題(主標題和子圖示題),座標軸(軸標籤和刻度),圖例,子圖中曲線(這裡可以根據情況換成其他圖形,比如柱狀圖,散點圖等等)。

上面的範例程式碼不用太關心,這裡只是為了顯示Matplotlib的主要元素。
後續的文章會介紹各個主要元素的常用屬性,最終的目的是能夠靈活的繪製出符合顯示要求的圖形,而不僅僅只是繪製出圖形。

本篇介紹的主要元素是畫布

2. 畫布

畫布是其他所有的元素的載體,可以說是最重要,也是最容易被忽視的元素。
繪製圖形之前,第一件事就是建立畫布

2.1. 主要屬性

建立畫布之後,一般主要用到的屬性是調整畫布的大小顏色
Matplotlib畫布的大小通過設定英寸和dpi來實現,dpi表示一英寸有多少畫素。

2.1.1. 畫布大小

比如下面的範例:

fig = plt.figure(figsize=[6, 3], dpi=100)
fig.suptitle("標題")
x = np.array(range(0, 8))
y = np.sin(x)
plt.plot(x, y)

修改dpi=200,圖形明顯變大和清晰。

fig = plt.figure(figsize=[6, 3], dpi=200)

2.1.2. 畫布顏色

除了大小,設定畫布顏色也是比較常用的。
顏色主要有兩種,背景色和邊框顏色(預設的邊框寬度是0,所以要設定邊框顏色時,別忘了設定邊框的寬度)。
比如:下面範例設定了背景色淺綠色,邊框寬度10,顏色紅色

fig = plt.figure(facecolor="lightgreen",
                edgecolor="red",
                linewidth=10)
fig.suptitle("標題")
x = np.array(range(0, 8))
y = np.sin(x)
plt.plot(x, y)

2.2. 主要方法

除了屬性,畫布還有幾個方法也是經常使用的。

2.2.1. 設定標題

上面的範例中已經包含了,也就是 suptitle() 方法。

2.2.2. 新增子圖

新增子圖用 add_subplot() 方法,這個方法的引數一般是三個陣列 xyz
x表示有幾行,y表示有幾列,z表示是第一個子圖。
比如:一行兩列2個圖

fig = plt.figure()

fig.add_subplot(121)
fig.add_subplot(122)

比如:2行一列2個圖:

fig = plt.figure()

fig.add_subplot(211)
fig.add_subplot(212)

比如:2行2列4個圖:

fig = plt.figure()

fig.add_subplot(221)
fig.add_subplot(222)
fig.add_subplot(223)
fig.add_subplot(224)

2.2.3. 儲存影象

畫布還有個重要的功能就是把顯示的圖形儲存下來,即 savefig() 方法。
可以把繪製的圖形儲存到磁碟,用於分享或者製作報告。

fig.savefig("d:/share/image.png")

3. 總結回顧

畫布讓我們可以整體上設定圖形的質量和排版,分析和作圖過程中雖然不用過多考慮它,但是最終如果要出報告和檔案時,畫布的設定就會變得重要。

畫布是繪圖的第一步,接下來這個系列會逐步介紹 Matplotlib的其他主要元素。