В прошлой теме было рассмотрено создание простейшего графика с помощью Matplotlib с большинством настроек по умолчанию. Теперь рассмотрим, как мы можем настроить различные аспекты графика.
Для осей можно указать метки, которые поясняют, что представляют оси. В зависимости от оси у объекта Axes для установки меток применяются следующие методы:
set_xlabel(): устанавливает метку для оси X, которая описывает измерение данных вдоль горизонтальной оси.
set_ylabel(): устанавливает метку для оси Y, которая описывает измерение данных вдоль вертикальной оси.
Оба метода идентичны:
Axes.set_xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs) Axes.set_ylabel(ylabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)
Первый параметр в обоих случаях (xlabel / ylabel) представляет текст метки.
Параметр labelpad задает расстояние до оси (по умолчанию: 4.0).
Параметр loc устанавливает положение метки. Для метки по оси X применяются значения left (слева), center (по центру), right (справа),
а для метки по оси Y применяются значения bottom (снизу), center (по центру), top (в верху)
(в обоих случаях значение по умолчанию: center)
Пример установки меток для осей:
import matplotlib.pyplot as plt
days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"]
rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05]
figure, axes = plt.subplots()
# Построение графика
axes.plot(days, rates)
# устанавливаем метки для осей
axes.set_xlabel("День")
axes.set_ylabel("Цена")
plt.show()
При создании графика в функциональном стиле мы можем использовать аналогичные функции:
# для оси X matplotlib.pyplot.xlabel(xlabel, fontdict=None, labelpad=None, *, loc=None, **kwargs) # для оси Y matplotlib.pyplot.ylabel(ylabel, fontdict=None, labelpad=None, *, loc=None, **kwargs)
Пример применения:
import matplotlib.pyplot as plt
days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"]
rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05]
# Построение графика
plt.plot(days, rates)
# устанавливаем метки для осей
plt.xlabel("День")
plt.ylabel("Цена")
plt.show()
С помощью дополнительных необязательных параметров можно настроить шрифт текста меток:
color: цвет текста, например, в виде названия или шестнадцатеричного значения
fontfamily (псевдонимы family и fontname): семейство шрифта. Возможные щначения: "serif", "sans-serif", "cursive", "fantasy", "monospace" или название конкретного шрифта
fontsize либо size: размер шрифта в виде числового значения с плавающей точкой, либо можно использовать встроенные значения: "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large"
fontstretch либо stretch: растяжение шрифта в виде значения в диапазоне 0-1000 или в виде одной из следующих констант: "ultra-condensed", "extra-condensed", "condensed", "semi-condensed", "normal", "semi-expanded", "expanded", "extra-expanded", "ultra-expanded"
fontstyle либо style: стиль шрифта в виде одного из следующих значений: "normal", "italic", "oblique"
fontweight либо weight: толщина шрифта в виде числового значения в диапазоне 0-1000 или одного из следующих значений: "ultralight", "light", "normal", "regular", "book", "medium", "roman", "semibold", "demibold", "demi", "bold", "heavy", "extra bold", "black"}
Например, мы можем изменить размер или цвет шрифта, чтобы сделать метки более заметными:
axes.set_xlabel("День", fontsize=12, color="navy", fontfamily="monospace")
axes.set_ylabel("Цена", fontsize=12)
Заголовок указывает на назначение графика. Это краткий, информативный текст, размещенный над графиком, чтобы передать цель или тему визуализации. Для добавления
заголовка к графику у объекта Axes применяется метод set_title():
Axes.set_title(label, fontdict=None, loc=None, pad=None, *, y=None, **kwargs)
По сути тут те же самые параметры, что и у выше рассмотренных функций, только первый параметр передает текст для всего графика:
import matplotlib.pyplot as plt
days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"]
rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05]
figure, axes = plt.subplots()
# Построение графика
axes.plot(days, rates)
# устанавливаем метки для осей
axes.set_xlabel("День")
axes.set_ylabel("Цена")
# устанавливаем заголовок
axes.set_title("Динамика курса доллара", fontsize=14)
plt.show()
При использовании функционального стиля применяется аналогичная функция matplotlib.pyplot.title(). Например:
import matplotlib.pyplot as plt
days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"]
rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05]
# Построение графика
plt.plot(days, rates)
# устанавливаем метки для осей
plt.xlabel("День")
plt.ylabel("Цена")
# устанавливаем заголовок
plt.title("Динамика курса доллара", fontsize=14)
plt.show()
Третий параметр функций Axes.plot() и matplotlib.pyplot.plot() представляет строку форматирования, которая по сути представляет сокращение для быстрой установки основных свойств графика в следующем виде:
fmt = "[marker][line][color]"
Где marker представляет тип отметки значения или маркер, line - параметры линии и color - цвет.
Каждый из этих параметров является необязательным. Если он не указан, используется значение из цикла стилей. Исключение: если указана линия, но нет маркера, данные будут представлять собой линию без маркеров.
Мы можем применять следующие типы маркеров:
",": маркер пикселя
"o": маркер круга
"v": маркер треугольника вниз
"^": маркер треугольника вверх
"<": маркер треугольника влево
">": маркер треугольника вправо
"1": маркер треугольника вниз
"2": маркер треугольника вверх
"3": маркер треугольника влево
"4": маркер треугольника вправо
"8": маркер восьмиугольника
"s": маркер квадрата
"p": маркер пятиугольника
"P": маркер плюса (заполненный)
"*": маркер звезды
"h": маркер шестиугольника 1
"H": маркер шестиугольника 2
"+": маркер плюса
"x": маркер x
"X": маркер x (заполненный)
"D": маркер ромба
"d": тонкий ромб маркер
"|": маркер вертикальной линии
"_": маркер горизонтальной линии
".": маркер точки
Стили линий:
"-": стиль сплошной линии
"--": стиль пунктирной линии
"-.": стиль штрихпунктирной линии
":": стиль точечно-штриховой линии
Поддерживаемые сокращения цветов представляют однобуквенные коды:
"b": синий
"g": зеленый
"r": красный
"c": голубой
"m": пурпурный
"y": желтый
"k": черный
"w": белый
Если цвет является единственной частью строки формата, можно дополнительно использовать полные имена ("green") или шестнадцатеричные строки ("#008000").
Все эти и многие другие параметры также можно контролировать с помощью именованных аргументов. Примеры комбинаций:
"b" # синие маркеры стандартной формы "or" # красные круги "-g" # зеленая сплошная линия "--" # пунктирная линия стандартного цвета "^k:" # черные маркеры в виде треугольников, соединенные пунктирной линией
Пример настройки линий:
import matplotlib.pyplot as plt days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"] rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05] figure, axes = plt.subplots() # синии линии с круглыми маркерами axes.plot(days, rates, "ob-") plt.show()
Аналогично все делается в функциональном стиле:
import matplotlib.pyplot as plt days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"] rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05] # синии линии с круглыми маркерами plt.plot(days, rates, "ob-") plt.show()
Деления представляют метки и подписи вдоль осей X и Y, которые указывают на определенные точки данных или интервалы. Для настройки делений у объекта Axes применяются
следующие методы:
set_xticks(): задает положения делений по оси X
set_yticks(): задает положения делений по оси Y
Оба метода имеют одинаковый набор параметров:
Axes.set_xticks(ticks, labels=None, *, minor=False, **kwargs) Axes.set_yticks(ticks, labels=None, *, minor=False, **kwargs)
ticks: массив местоположений делений (либо чисел с плавающей запятой, либо в единицах оси)
labels: метки для каждого деления; должны иметь ту же длину, что и деления
minor: если False, устанавливаются только основные деления; если True, только второстепенные деления
Пример установки делений:
import matplotlib.pyplot as plt
days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"]
rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05]
figure, axes = plt.subplots()
# синии линии с круглыми маркерами
axes.plot(days, rates, "ob-")
# установка делений осей
axes.set_xticks([0, 1, 2, 3, 4, 5], ["31 янв", "3 фев", "4 фев", "5 фев", "6 фев", "7 фев"])
axes.set_yticks([74.5, 75.0, 75.5, 76.0, 76.5, 77.0, 77.5])
# устанавливаем метки для осей
axes.set_xlabel("День")
axes.set_ylabel("Цена")
plt.show()
При применении функционального подхода для настройки делений осей используются аналогичные функции xticks() и yticks()
import matplotlib.pyplot as plt
days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"]
rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05]
# Построение графика
plt.plot(days, rates, "ob-")
# установка делений осей
plt.xticks([0, 1, 2, 3, 4, 5], ["31 янв", "3 фев", "4 фев", "5 фев", "6 фев", "7 фев"])
plt.yticks([74.5, 75.0, 75.5, 76.0, 76.5, 77.0, 77.5])
# устанавливаем метки для осей
plt.xlabel("День")
plt.ylabel("Цена")
plt.show()
Линии сетки представляют горизонтальные и вертикальные линии, которые проходят по графику, помогая в интерпретации данных и выравнивании. Для добавления линий на график применяется метод
Axes.grid():
Axes.grid(visible=None, which="major", axis="both", **kwargs)
Основные параметры функции:
visible: указывает, отображать ли линии сетки (при значении True)
which: линии сетки, к которым будут применяться изменения. Может принимать следующие значения: "major", "minor" и "both"
axis: ось, к которой будут применяться изменения. Может принимать следующие значения: "both", "x" и "y"
Применение:
import matplotlib.pyplot as plt days = ["31.01", "03.02", "04.02", "05.02", "06.02", "07.02"] rates = [75.73, 77.02, 76.98, 76.91, 76.55, 77.05] figure, axes = plt.subplots() # синии линии с круглыми маркерами axes.plot(days, rates, "ob-") # настраиваем сетку axes.grid(True, which="major", axis="both") plt.show()
По умолчанию отображаются как основные, так и второстепенные линии сетки. Но можно настроить, какие линии сетки отображаются и как они выглядят, используя такие параметры,
как which и axis. Дополнительный параметр kwargs может устанавливать дополнительные параметры линий, такие как цвет, толщину, прозрачность и т.д. Например:
axes.grid(True, which="major", axis="both", linestyle="--", color="gray", linewidth=0.5, alpha=0.7)
При применении функционального подхода используется аналогичная функция matplotlib.pyplot.grid()
plt.grid(True, which="major", axis="both", linestyle="--", color="gray", linewidth=0.5, alpha=0.7)