6.4. Добавление сетки

Порой, простое добавление сетки в разы увеличивает легкость восприятия графика. С сеткой гораздо легче соотносить определенные области графика с значениями на его осях. В самом простом случае, сетка добавляется методом Axes.grid():

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3*np.pi, 3*np.pi, 200)
y = np.sinc(x)

fig, ax = plt.subplots()

ax.plot(x, y)

ax.grid()

plt.show()

Matplotlib grid

С помощью параметра axis мы можем выбирать какие именно линии сетки необходимо отображать: горизонтальные, вертикальные или все вместе:

#axis
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3*np.pi, 3*np.pi, 200)
y = np.sinc(x)

fig = plt.figure()

ax_1 = fig.add_subplot(2, 1, 1)
ax_2 = fig.add_subplot(2, 2, 3)
ax_3 = fig.add_subplot(2, 2, 4)

ax_1.plot(x, y)
ax_1.grid(axis = 'x')
ax_1.set_title('axis = "x"')

ax_2.plot(x, y)
ax_2.grid(axis = 'y')
ax_2.set_title('axis = "y"')

ax_3.plot(x, y)
ax_3.grid(axis = 'both')
ax_3.set_title('axis = "both"')

fig.set_figwidth(12)
fig.set_figheight(12)

plt.show()

Matplotlib grid: отображение горизонтальных и вертикальных линий сетки

Так как сетка состоит из линий, то метод grid() поддерживает все параметры уже знакомые нам по графику plot(). Мы можем легко установить такие параметры как цвет линий, их толщину и начертание:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3*np.pi, 3*np.pi, 200)
y = np.sinc(x)

fig, ax = plt.subplots()

ax.plot(x, y, linewidth = 5)

ax.grid(color = 'blue',    #  цвет линий
        linewidth = 2,    #  толщина
        linestyle = '--')    #  начертание

fig.set_figwidth(12)
fig.set_figheight(6)

plt.show()

Matplotlib grid: цвет, толщина и начертание

Линии сетки бывают как основные так и вспомогательные. Контролировать то как они отображаются отдельно позволяет параметр which. Данный параметр может принимать одно из трех значений:

  • 'major' - применение параметров внешнего вида к основным линиям (установлен по умолчанию);
  • 'minor' - к вспомогательным линиям;
  • 'both' - к обеим линиям.
import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-3*np.pi, 3*np.pi, 200)
y = np.sinc(x)

fig, ax = plt.subplots()

ax.plot(x, y,
        color = 'r',
        linewidth = 4)

#  Прежде чем рисовать вспомогательные линии
#  необходимо включить второстепенные деления
#  осей:
ax.minorticks_on()

#  Определяем внешний вид линий основной сетки:
ax.grid(which='major',
        color = 'k', 
        linewidth = 2)

#  Определяем внешний вид линий вспомогательной
#  сетки:
ax.grid(which='minor', 
        color = 'k', 
        linestyle = ':')

fig.set_figwidth(12)
fig.set_figheight(6)

plt.show()

Matplotlib grid: контроль над основными и вспомогательными линиями