Создание графиков и диаграмм на Python

Последнее обновление: 10.02.2026

Визуализация данных позволяет преобразовать необработанные сырые данные в содержательные, осмысленные и более понятные визуальные образы. В экосистеме языка Python существует множество различных инструментов для визуализации данных, но самым популярным из них является библиотека Matplotlib. Эта библиотека предоставляет богатый набор инструментов для создания самых разнообразных статических, анимированных и интерактивных графиков и диаграмм: от простых линейных графиков до сложных 3D-графиков, позволяя разработчику настраивать под свои требования самые различные аспекты визуализации. Гибкость и возможности настройки Matplotlib делают эту библиотеку популярной среди разработчиков на языке Python и специалистов по анализу данных.

Для работы с Matplotlib нам естественно прежде всего надо установить эту библиотеку. Это можно с помощью менеджера пакетов pip с помощью команды:

pip install matplotlib

После завершения установки мы можем проверить, что все установлено корректно, выполнив в консоли команду, которая выводит версию matplotlib:

python -c "import matplotlib; print(matplotlib.__version__)"

Полный пример:

(myvenv) eugene@Eugene:/python/metanit$ pip install matplotlib
Collecting matplotlib
  Downloading matplotlib-3.10.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting contourpy>=1.0.1 (from matplotlib)
  Downloading contourpy-1.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.4 kB)
Collecting cycler>=0.10 (from matplotlib)
  Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
.....................................................................
Downloading six-1.17.0-py2.py3-none-any.whl (11 kB)
Installing collected packages: six, pyparsing, pillow, packaging, kiwisolver, fonttools, cycler, contourpy, python-dateutil, matplotlib
Successfully installed contourpy-1.3.1 cycler-0.12.1 fonttools-4.56.0 kiwisolver-1.4.8 matplotlib-3.10.8 packaging-24.2 pillow-11.1.0 pyparsing-3.2.1 python-dateutil-2.9.0.post0 six-1.17.0
(myvenv) eugene@Eugene:/python/metanit$ python -c "import matplotlib; print(matplotlib.__version__)"
3.10.8
(myvenv) eugene@Eugene:/python/metanit$ 

Основная функциональность (основные функции для создания графиков) библиотеки заключена в модуле matplotlib.pyplot, соответственно для создания графиков и диаграмм нам надо импортировать данный модуль:

import matplotlib.pyplot as plt

Создание графика Matplotlib

Каждый график Matplotlib, независимо от его сложности, имеет следующие основные компоненты:

  • Данные. В основе каждого графика лежат точки данных, которые надо визуализировать. Эти точки данных могут быть представлены в различных формах, таких как списки, массивы или данные, загруженные из внешних источников. Тип имеющихся данных влияет на выбор графика и способ его настройки.

  • Тип графика. Matplotlib предлагает множество типов графиков, включая линейные графики, столбчатые диаграммы, диаграммы рассеяния, гистограммы и другие. Выбор типа графика должен соответствовать характеру данных и цели визуализации.

  • Настройки. Matplotlib предоставляет обширные возможности настройки, позволяя адаптировать график к конкретным потребностям. Можно изменять различные аспекты графика, такие как цвета, маркеры, стили линий, метки, заголовки, свойства осей и многое другое. Такой уровень настройки позволяет создавать визуально привлекательные и информативные визуализации.

  • Отображение или сохранение. После создания графика его можно отобразить на экране или сохранить в файл в различных форматах (например, PNG и PDF) для последующего использования или обмена.

Теперь рассмотрим простейшей пример построения графика с помощью этой библиотеки. Для этого в текущем каталоге определим файл app.py со следующим кодом:

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.show()

Рассмотрим, что делает этот код. Здесь список days представляет дни месяца, а rates - курс доллара в эти дни. Таким образом, оба списка совпадают по количеству элементов.

Функция plot() принимает набор значений, которые надо вывести на графике. Так, в функцию plot() передаются два списка - сначала идет для отображения по оси X (здесь список days) и затем идет список для оси Y (здесь список rates). И c помощью функции show() отображаем график в окне просмотра по умолчанию.

Запустим этот скрипт на выполнение, и нам отобразится следующее окно с курсами валюты по дням:

Создание простейшего графика в Matplotlib и Python

Теперь рассмотрим основные компоненты, из которых состоит график, и управление этими компонентами.

Фигура

Базовым компонентом графика в Matplotlib является рисунок или фигура (figure), которая представляет пространство (контейнер), где будут отображаться графики и диаграммы. Фигура отслеживает все дочерние оси графика, все его компоненты - заголовки, легенды, подписи и вложенные подфигуры.

Для создания фигуры можно использовать ряд функций. Прежде всего это фунция figure():

import matplotlib.pyplot as plt 

plt.figure()    # создание фугуры

Для отрисовки фигуры применяется функция show():

import matplotlib.pyplot as plt 

plt.figure()    # создание фугуры

plt.show()      # отрисовка фигуры

В итоге мы получим следующее окно:

создание фигуры в Matplotlib и Python

Может возникнуть вопрос, почему же в самом первом примере с рисованием графика с помощью функции plt.plot() мы не создавали никаких фигур, но тем не менее окно с графиком у нас отрисовывалось как и должно. Дело в том, что при первом вызове команды, связанной с построением графика (например, plt.plot()), библиотека Matplotlib проверяет наличие текущей активной фигуры. Если ее нет, библиотека автоматически создает новую фигуру.

Настройка фигуры

Функция figure() принимает ряд параметров, которые позволяют настроить фигуру:

matplotlib.pyplot.figure(num=None, figsize=None, dpi=None, *, facecolor=None, edgecolor=None, frameon=True, FigureClass=matplotlib.figure.Figure, clear=False, **kwargs)

Рассмотрим основные параметры:

  • num: уникальный идентификатор фигуры в виде целого числа или строки. Одновременно может существовать несколько фигур. И если фигура с таким идентификатором уже существует, она становится активной и возвращается. Если же фигуры с таким идентификатором нет или num не указан, создается новая фигура, становится активной и возвращается.

  • figsize: задает размер фигуры в виде кортежа (float, float), который представляет значения ширины и высоты в дюймах (по умолчанию: [6.4, 4.8])

  • dpi: разрешение фигуры в точках на дюйм (по умолчанию: 100.0)

  • facecolor: цвет фона (по умолчанию: "white")

  • edgecolor: цвет границы (по умолчанию: "white")

  • frameon: настраивает рамку фигуры. Если False, отключается отрисовка рамки фигуры. По умолчанию True

  • FigureClass: тип фигуры. Если задано, будет создан экземпляр этого подкласса, а не обычная фигура.

  • clear: если True и фигура уже существует, то она очищается. По умолчанию: False

  • layout: задает компоновку элементов графика (меток, делений и т.д.). Может принимать следуюющие значения:

    • constrained: размеры осей корректируются, чтобы избежать перекрытия элементов оформления осей. Может обрабатывать сложные макеты графиков и цветовые шкалы, поэтому рекомендуется.

    • compressed: использует тот же алгоритм, что и constrained, но удаляет лишнее пространство между осями с фиксированным соотношением сторон. Лучше всего подходит для простых сеток осей.

    • tight: корректирует параметры подграфиков таким образом, чтобы элементы оформления не перекрывались.

    • none: механизм компоновки не используется.

    • Объект класса LayoutEngine: позволяет сторонним разработчикам предоставлять собственные механизмы компоновки.

Применим некоторые из этих параметров для настройки фигуры:

import matplotlib.pyplot as plt

f_size=(2, 2)   # размер фигуры
f_color = "#59ABE3"   # цвет фона
f_header = "График"   # заголовок
f_layout = "constrained"   # компоновка

figure = plt.figure(f_header, figsize=f_size, facecolor=f_color, layout=f_layout)
plt.show()
настройка фигуры в Matplotlib и Python

Оси

На каждом рисунке есть одна или несколько осей. Ось (axуs) в контексте Matplotlib представляет собой отдельный график или подграфик внутри фигуры в виде объекта Axes. Оси предоставляют пространство, где можно визуализировать данные, устанавливать системы координат и применять различные настройки с помощью методов типа Axes.

Для создания одного набора осей на графике можно использовать функцию subplots():

import matplotlib.pyplot as plt

figure, axes = plt.subplots()

print(figure)       # Figure(640x480)
print(axes)         # Axes(0.125,0.11;0.775x0.77)

plt.show()

Причем функция subplots() возвращает сразу и фигуру (figure), и собственно оси (объект Axes), благодаря чему мы можем настраивать оба аспекта приложения. В итоге окно отобразит фигуру с нарисованными осями:

создание осей и функция subplots в Matplotlib и Python

Создание графика

Для создания графика у объекта Axes применяется функция plot():

plot(*args, scalex=True, scaley=True, data=None, **kwargs)

Через первый параметр - args передаются значения для осей графика. Если передаются два набора данных, то первый набор представляет значения для оси X и второй набор - значения для оси Y. Можно также передать только один набор данных - только для оси Y. Дополнительные параметры:

  • scalex и scaley определяют, будет ли график масштабироваться

  • data представляет объект с данными для имен меток для построения графика по осям 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)

plt.show()
Создание простейшего графика в Matplotlib и Python

Здесь список days, который представляет дни месяца, проецируется на ось X, а список rates (валютный курс по дням) - на ось 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]

# Создание графика
plt.plot(days, rates)

plt.show()

Дело в том, что в данном случае наряду с автоматическим созданием фигуры библиотека также автоматически генерирует объект Axes и привязывает к этому объекту данные (переменные days и rates). В итоге мы получим тот же самый результат.

Два типа интерфейсов

Выше мы рассмотрели по сути два типа создания графика - по сути два типа интерфейса:

  1. Интерфейс объекта Axes (объектно-ориентированный, явный)

    Сначала создаеся объект Figure и один или несколько объектов Axes, затем с помощью методов этих объектов добавляются данных, настраиваются границы, устанавливаются меток и т.д.

  2. Интерфейс модуля pyplot (функциональный, неявный)

    Представляет применение функций модуля pyplot. Управление графиком и осями осуществляется с помощью этих функций, и они присутствуют в фоновом режиме лишь неявно.

  3. Но оба интерфейса фактически используют аналогичные функции, которые обычно совпадают по названию и имеют одинаковые параметры. Например, построение графика с помощью методов объекта Axes:

    fig, axes = plt.subplots()
    axes.plot(x, y)
    axes.set_title("График") # заголовок
    plt.show()
    

    И аналогичный пример в функциональном стиле:

    plt.plot(x, y)
    plt.title("График") # заголовок
    plt.show()
    
Помощь сайту
Юмани:
410011174743222
Номер карты:
4048415020898850
Morty Proxy This is a proxified and sanitized view of the page, visit original site.