Matplotlib – это библиотека для Python, предназначенная для создания графиков и визуализации данных. Она обеспечивает широкий спектр возможностей для создания различных типов графиков, диаграмм и плотностных карт.
Основные компоненты Matplotlib включают объекты Figure (фигура), Axes (оси) и Axis (ось). Фигура представляет собой контейнер, который содержит все элементы графика. Оси представляют собой прямоугольную область графика, в которой данные отображаются на основе координатных систем. Они включают метки, масштабы и другие элементы, такие как легенда и заголовок. Оси могут быть созданы внутри фигуры или рассчитаны автоматически. Оси состоят из объектов Axis, которые управляют отображением меток и масштабов на осях.
Matplotlib также интегрируется с множеством других библиотек Python, таких как NumPy и Pandas, что делает ее мощным инструментом для анализа данных и визуализации.
Создание линейного графика
Стандартной и основной функцией построения графиков в matplotlib является plt.plot() .Синтаксис построения линейного графика следующий:
matplotlib.pyplot.plot(x, y, scalex=True, scaley=True, data=None, **kwargs)
Пример кода, с помощью которого можно построить график:
# Импорт библиотеки
import matplotlib
import matplotlib.pyplot as plt
# Установка значений по оси X
x = np.arange(0, 8, 0.01)
# Установка значений по оси Y
y = [i**3 for i in x ]
# Создание графика
plt.plot(x, y)
#Установки сетки под графиком
plt.grid()
# Отображение графика
plt.show()

Список параметров функций setp() и plot()
Параметр | Описание |
---|---|
alpha | Степень прозрачности графика (значение от 0 до 1) |
color или c | Цвет линии |
dash_capstyle | Стиль штриховых конечных точек [‘butt’ | ’round’ | ‘projecting’] |
dash_joinstyle | Стиль штриховых соединительных точек [‘miter’ | ’round’ | ‘bevel’] |
data | Данные графика в формате (x, y), где x, y – массивы numpy |
linestyle или ls | Стиль линии [ ‘-‘ | ‘–‘ | ‘-.’ | ‘:’ | ‘steps’ | …] |
linewidth или lw | Толщина линии (вещественное число) |
marker | Маркер точек |
markeredgecolor или mec | Цвет границ маркеров |
markeredgewidth илиmew | Толщина границы маркеров (вещественное число) |
markerfacecolor или mfc | Цвет заливки маркеров |
markersize или ms | Размер маркеров |
solid_capstyle | Стиль конечных точек непрерывной линии [‘butt’ | ’round’ | ‘projecting’] |
solid_joinstyle | Стиль соединительных точек непрерывной линии [‘miter’ | ’round’ | ‘bevel’] |
visible | Показать/скрыть график [True | False] |
xdata | Значения для оси абсцисс (массив numpy) |
ydata | Значения для оси ординат (массив numpy) |
Изменение стиля линии
В случае, если третьим параметром в plot() указать строку с двумя дефисами, то вместо сплошной линии получим штриховую линию, этого же результата можно добиться, если передать plot() в переменную, а затем вызвать функцию setp().

plt.plot(x, y, '--')
# Или
lines = plt.plot(x, y, '--')
plt.setp(lines, linestyle='-.')
Все варианты типа лини:
Обозначение типа линии | Описание |
‘-‘ | Непрерывная линия (используется по умолчанию) |
‘–‘ | Штриховая линия |
‘-.’ | Штрихпунктирная линия |
‘:’ | Пунктирная линия |
‘None’ или ‘ ‘ | Без рисования линии |
Изменение цвета линий графиков
Помимо типа линий у графиков можно менять еще и цвет.
Цвет можно устанавливать также через plot() или setp() в виде букв, шестнадцатеричной записи или RGB (от 0 до 1).
plt.plot(x, y, 'b')
# Или
lines = plt.plot(x, y)
plt.setp(lines, color='#0000CC')
# Или
lines = plt.plot(x, y)
plt.setp(lines, color=(0,0,1))
Изменение маркеров точек у графиков
Также можно поменять тип маркеров у точек
lines = plt.plot(x, y)
plt.setp(lines, linestyle='-.', marker='s', markerfacecolor='w')
Пример:

В таблица ниже перечислены все типы графиков.
Обозначение | Описание маркера |
‘o’ | ![]() |
‘v’ | ![]() |
‘^’ | ![]() |
‘<‘ | ![]() |
‘>’ | ![]() |
‘2’ | ![]() |
‘3’ | ![]() |
‘4’ | ![]() |
‘s’ | ![]() |
‘p’ | ![]() |
‘*’ | ![]() |
‘h’ | ![]() |
‘H’ | ![]() |
‘+’ | ![]() |
‘x’ | ![]() |
‘D’ | ![]() |
‘d’ | ![]() |
‘|’ | ![]() |
‘_’ | ![]() |
Многолинейные графики
Многолинейные графики используются для отображения взаимосвязей между двумя или более переменными. Они используются для отображения тенденций во времени, сравнения различных групп, а также для демонстрации взаимодействия между несколькими переменными. Многолинейные графики могут быть использованы для представления данных несколькими линиями, каждая из которых представляет собой отдельную характеристику.
Для этого достаточно использовать несколько функций plt.plot() перед вызовом plt.show().
plt.plot(x, [i*2 for i in x], 'b-')
plt.plot(x, [i**2 for i in x], 'g-')
plt.plot(x, [i/2 for i in x], 'y-')
plt.show()

Гистограмма
Гистограммы идеально подходят для демонстрации сегментов информации, особенно при сравнении различных категорий или дискретных переменных. Они особенно удобны для сравнения возрастных групп, классов и т.п., если их не слишком много. Кроме того, гистограммы хорошо подходят для отображения временных рядов данных благодаря ограниченному пространству на оси x, которое идеально подходит для представления лет, минут, часов или месяцев.
Рассмотрим синтаксис гистограммы:
matplotlib.pyplot.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)
аргументы, связанные с plt.bar(), очень просты. Однако я рекомендую ознакомиться с документацией.
bar_list = list(np.random.randint(1,150,8))
plt.bar(range(len(bar_list)), bar_list, color = '#AFC900')
# Для горизонтальной гистограммы
plt.barh(range(len(bar_list)), bar_list, color = '#AFC900')
plt.show()

Сгруппированная гистограмма
Сгруппированная гистограмма – это разновидность столбчатой диаграммы, которая показывает, как две или более переменных сравниваются во времени. Ее также называют столбиковой диаграммой, и она выглядит как ряд столбцов или столбиков, расположенных друг над другом. При правильном использовании штабелированные диаграммы очень полезны для сравнения. Они предназначены для сравнения суммарных значений по категориям.
# Создадим два рандомных списка
t = list(np.random.randint(1,200,5))
m = list(np.random.randint(1,200,5))
x = np.arange(len(t)) # Задаем измерения для оси
width = 0.35 # Ширина бара
plt.bar(x - width/2, t, width)
plt.bar(x + width/2, m, width)
plt.show()

Круговая диаграмма
Круговые диаграммы можно использовать только в тех случаях, когда отдельные части складываются в значимое целое и используются для визуализации вклада каждой части в целое.
Рассмотрим синтаксис:
matplotlib.pyplot.pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, shadow=False, labeldistance=1.1, startangle=0, radius=1, counterclock=True, wedgeprops=None, textprops=None, center=(0, 0), frame=False, rotatelabels=False, *, normalize=True, data=None)
Наиболее важные аргументы:
- x: основной массив, из которого нужно сделать визуализацию. Они должны составлять единое целое.
- labels: имена меток, соответствующие каждому элементу в x
- explode: для создания взорванной круговой диаграммы
- startangle: угол, с которого начнется рисование
rndnums = list(np.random.randint(5,20,4))
labels = ['Город A', 'Город B', 'Город C', 'Город D']
plt.pie(rndnums, labels = labels)
plt.show()
