设置 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