Настройка линейных графиков Matplotlib

MatplotlibBeginner
Практиковаться сейчас

Введение

Matplotlib — это мощная библиотека Python для создания статических, анимированных и интерактивных визуализаций. Хотя создание базового графика является простым, его настройка является ключом к тому, чтобы ваши данные были ясными, понятными и визуально привлекательными.

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

Поскольку эта лабораторная среда использует WebIDE, мы не можем отображать графики в отдельном окне GUI. Вместо этого мы будем сохранять каждый график в файл изображения с помощью plt.savefig(). Затем вы сможете просмотреть сгенерированное изображение непосредственно в IDE.

Давайте начнем!

Построение линии с пользовательским цветом с помощью plt.plot(color='red')

На этом шаге вы узнаете, как изменить цвет линии на вашем графике. По умолчанию Matplotlib перебирает предопределенный набор цветов. Однако вы можете легко указать цвет по вашему выбору, используя параметр color в функции plt.plot().

Сначала давайте построим базовый график синусоиды. Мы будем использовать NumPy для генерации точек данных.

Откройте файл main.py, расположенный в каталоге ~/project в файловом проводнике слева. Замените его содержимое следующим кодом. Этот код построит синусоиду и окрасит ее в красный цвет.

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with a custom color
plt.plot(x, y, color='red')

## Save the plot to a file
plt.savefig('/home/labex/project/plot_color.png')

print("Plot saved as plot_color.png")

После того как вы обновили файл main.py, сохраните его. Теперь запустите скрипт из терминала в нижней части IDE:

python3 main.py

В терминале вы должны увидеть следующий вывод:

Plot saved as plot_color.png

В каталоге ~/project появится новый файл с именем plot_color.png. Дважды щелкните по нему, чтобы открыть и просмотреть ваш первый настроенный график. Вы увидите красную синусоиду.

Plot color

Добавление маркеров с помощью plt.plot(marker='o')

На этом шаге вы добавите маркеры к своим точкам данных. Маркеры полезны для выделения точного местоположения каждой точки данных на линии, что может быть особенно полезно, когда точки данных редкие.

Вы можете добавить маркеры, используя параметр marker в функции plt.plot(). Доступно множество стилей маркеров, таких как 'o' для кругов, 'x' для крестиков и '*' для звездочек.

Давайте изменим файл main.py, чтобы добавить круговые маркеры к нашему графику. Мы также изменим имя выходного файла на plot_marker.png, чтобы сохранить прогресс из предыдущего шага.

Обновите файл main.py следующим кодом:

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with a custom color and marker
plt.plot(x, y, color='red', marker='o')

## Save the plot to a new file
plt.savefig('/home/labex/project/plot_marker.png')

print("Plot saved as plot_marker.png")

Сохраните файл и снова запустите скрипт в терминале:

python3 main.py

Терминал покажет следующий вывод:

Plot saved as plot_marker.png

Теперь найдите новый файл plot_marker.png в файловом проводнике и дважды щелкните по нему. Вы увидите, что красная линия теперь имеет маленькие круги в каждой точке данных.

Plot marker

Установка стиля линии с помощью plt.plot(linestyle='--')

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

Это делается с помощью параметра linestyle (или его сокращенного варианта ls). Распространенные стили включают '--' для пунктирной линии, ':' для точечной и '-.' для штрихпунктирной.

Давайте обновим наш график, чтобы использовать пунктирную линию. Измените файл main.py, как показано ниже. Мы также изменим имя выходного файла на plot_linestyle.png.

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with custom color, marker, and line style
plt.plot(x, y, color='red', marker='o', linestyle='--')

## Save the plot to a new file
plt.savefig('/home/labex/project/plot_linestyle.png')

print("Plot saved as plot_linestyle.png")

Сохраните изменения и выполните скрипт из вашего терминала:

python3 main.py

Вы увидите подтверждающее сообщение:

Plot saved as plot_linestyle.png

Откройте только что созданный файл plot_linestyle.png. Вы заметите, что линия, соединяющая маркеры, теперь пунктирная, а не сплошная.

Plot linestyle

Добавление заголовка с помощью plt.title()

График без заголовка может быть неоднозначным. Крайне важно давать вашим графикам описательный заголовок, чтобы зрители могли сразу понять, что представляет собой график. В Matplotlib вы можете добавить заголовок с помощью функции plt.title().

На этом шаге вы добавите заголовок "Синусоида" к вашему графику. Эта функция вызывается перед сохранением изображения.

Измените файл main.py, чтобы включить вызов plt.title(). Новый выходной файл будет называться plot_title.png.

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with customizations
plt.plot(x, y, color='red', marker='o', linestyle='--')

## Add a title to the plot
plt.title('Sine Wave')

## Save the plot to a new file
plt.savefig('/home/labex/project/plot_title.png')

print("Plot saved as plot_title.png")

Сохраните файл и запустите скрипт:

python3 main.py

Вывод будет следующим:

Plot saved as plot_title.png

Откройте plot_title.png, чтобы увидеть ваш график. Теперь вверху должен отображаться заголовок "Sine Wave".

Plot title

Настройка пределов осей с помощью plt.xlim() и plt.ylim()

Иногда может потребоваться сфокусироваться на определенной области вашего графика или добавить отступы вокруг данных. Вы можете управлять диапазоном осей x и y с помощью функций plt.xlim() и plt.ylim() соответственно.

На этом заключительном шаге мы настроим оси, чтобы "приблизить" часть синусоиды. Мы установим диапазон оси x от 0 до 5, а оси y — от -1.5 до 1.5. Это придаст нашему графику вертикальные отступы.

Обновите файл main.py до финальной версии кода. Результат будет сохранен в файл plot_final.png.

import matplotlib.pyplot as plt
import numpy as np

## Generate data for the plot
x = np.arange(0, 10, 0.1)
y = np.sin(x)

## Plot the data with customizations
plt.plot(x, y, color='red', marker='o', linestyle='--')

## Add a title
plt.title('Sine Wave')

## Adjust the axis limits
plt.xlim(0, 5)
plt.ylim(-1.5, 1.5)

## Save the final plot to a file
plt.savefig('/home/labex/project/plot_final.png')

print("Plot saved as plot_final.png")

Сохраните файл и запустите скрипт в последний раз:

python3 main.py

Вы получите финальное подтверждение:

Plot saved as plot_final.png

Теперь откройте plot_final.png. Сравните его с предыдущими графиками. Вы увидите, что ось x теперь заканчивается на 5, а над и под синусоидой появилось больше пространства из-за новых пределов оси y.

Plot final

Резюме

Поздравляем с завершением этой лабораторной работы! Вы успешно научились настраивать базовый линейный график Matplotlib, делая его более информативным и визуально привлекательным.

В этой лабораторной работе вы практиковались в:

  • Изменении цвета линии с помощью параметра color в plt.plot().
  • Добавлении маркеров для точек данных с помощью параметра marker.
  • Установке стиля линии с помощью параметра linestyle.
  • Добавлении описательного заголовка с помощью функции plt.title().
  • Настройке диапазонов осей с помощью plt.xlim() и plt.ylim().

Это фундаментальные навыки для создания графиков профессионального качества для анализа и представления данных. Не стесняйтесь экспериментировать дальше, пробуя различные цвета, маркеры и стили линий, или добавляя метки к осям x и y с помощью plt.xlabel() и plt.ylabel().