設定 Matplotlib 網格間隔

Suraj Joshi 2020年12月31日
設定 Matplotlib 網格間隔

本教程將介紹我們如何在 Matplotlib 繪圖中設定網格間距,並對主要網格和次要網格應用不同的樣式。

我們必須使用 matplotlib.pyplot.grid() 函式來顯示網格。

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 6))
plt.xlim(0, 10)
plt.ylim(0, 10)
plt.grid()
plt.title("Plot with Grids")
plt.show()

輸出:

Matplotlib 中的預設網格

它顯示的是一個帶有網格的圖,其中網格的間距是按照 ticks 的間距來的。我們可以通過改變 ticks 的間距來改變網格間隔。

通過改變 ticks 的間距來改變 Matplotlib 繪圖網格間距

import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8, 6))

axes[0].set_xlim(0, 10)
axes[0].set_ylim(0, 10)
axes[0].set_title("Subplot 1")
axes[0].grid()

axes[1].set_xlim(0, 8)
axes[1].set_ylim(0, 8)
axes[1].set_title("Subplot 2")
axes[1].grid()

plt.show()

輸出:

通過改變 Matplotlib 中 ticks 的間距來改變網格間距

它建立了一個有兩個子圖的圖形。我們為兩個子圖設定了不同的刻度間距。從圖中可以清楚地看到,網格的間距是按照 ticks 的間距來保持的。

import numpy as np
import matplotlib.pyplot as plt

fig, axes = plt.subplots(nrows=2, ncols=1, figsize=(8, 6))

major_ticks_top = np.linspace(0, 20, 6)
minor_ticks_top = np.linspace(0, 20, 21)

major_ticks_bottom = np.linspace(0, 15, 6)

axes[0].set_xticks(major_ticks_top)
axes[0].set_yticks(major_ticks_top)
axes[0].set_xticks(minor_ticks_top, minor=True)
axes[0].set_yticks(minor_ticks_top, minor=True)
axes[0].set_title("Subplot 1")
axes[0].grid(which="major", alpha=0.6)
axes[0].grid(which="minor", alpha=0.3)

axes[1].set_xticks(major_ticks_bottom)
axes[1].set_yticks(major_ticks_bottom)
axes[1].set_title("Subplot 2")
axes[1].grid()

plt.tight_layout()
plt.show()

輸出:

Matplotlib 中的主要和次要 ticks

它顯示一個 Matplotlib 圖,其中有兩個子圖。Subplot 1 或頂部的子圖有小網格和大網格。小網格的間距為 1 個單位,用暗線表示。同樣,主要網格的位置,間距為 5 個單位,用較淺的線表示。

我們在 set_yticks()set_xticks() 函式中使用 minor=True 來表示小的 ticks。我們使用 which="major"來選擇對應 major ticks 的網格,使用 which="major"來選擇對應 minor ticks 的網格。

grid() 方法中的 alpha 引數用於設定網格線的強度。alpha 值越大,網格線越暗。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn