Диаграммы рассеяния в Matplotlib

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

Введение

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

В этой лаборатории вы будете использовать библиотеку Matplotlib в Python для создания диаграмм рассеяния. Вы научитесь:

  • Генерировать массивы данных с помощью NumPy.
  • Создавать базовую диаграмму рассеяния с помощью plt.scatter().
  • Настраивать внешний вид графика, включая размер и цвет маркеров.
  • Добавлять сетку для улучшения читаемости.

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

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

Генерация массивов данных x и y

На этом этапе вы создадите данные, которые мы будем использовать для нашей диаграммы рассеяния. Диаграмма рассеяния требует как минимум два массива данных одинаковой длины: один для координат оси x и один для координат оси y. Мы будем использовать библиотеку NumPy, которая является стандартом для численных операций в Python.

Сначала откройте файл main.py из файлового проводника на левой панели WebIDE. Здесь вы будете писать весь свой код для этой лаборатории.

Теперь добавьте следующий код в main.py, чтобы импортировать NumPy и создать два простых массива данных.

import numpy as np

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

Разберем код:

  • import numpy as np: Эта строка импортирует библиотеку NumPy и присваивает ей общепринятый псевдоним np.
  • x = np.array([...]): Это создает массив NumPy с именем x, содержащий наши точки данных для горизонтальной оси.
  • y = np.array([...]): Это создает массив NumPy с именем y, содержащий наши точки данных для вертикальной оси.

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

Построение диаграммы рассеяния с помощью plt.scatter(x, y)

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

Сначала вам нужно импортировать matplotlib.pyplot. Затем вы можете использовать функцию plt.scatter() для создания графика. Наконец, вы должны сохранить график в файл. Как упоминалось во введении, мы не можем использовать plt.show() для прямого отображения графика в этой среде. Вместо этого мы будем использовать plt.savefig() для сохранения его в виде изображения.

Обновите ваш файл main.py следующим кодом. Добавьте новые строки ниже существующего кода.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])

## Create scatter plot
plt.scatter(x, y)

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

print("Scatter plot saved to scatter_plot.png")

Объяснение кода:

  • import matplotlib.pyplot as plt: Импортирует модуль построения графиков и присваивает ему стандартный псевдоним plt.
  • plt.scatter(x, y): Это основная функция. Она принимает массивы x и y и отображает каждую пару значений (x, y) в виде точки.
  • plt.savefig('/home/labex/project/scatter_plot.png'): Эта функция сохраняет текущий график в файл с именем scatter_plot.png в вашем каталоге ~/project.

Теперь запустите ваш скрипт из терминала внизу WebIDE:

python3 main.py

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

Scatter plot saved to scatter_plot.png

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

Scatter plot

Настройка размера маркера с помощью параметра s

На этом шаге вы узнаете, как настроить размер маркеров (точек) на вашей диаграмме рассеяния. Функция plt.scatter() имеет необязательный параметр s, который управляет размером маркера.

Вы можете передать одно число, чтобы все маркеры имели одинаковый размер, или массив чисел (той же длины, что и ваши данные x и y), чтобы указать уникальный размер для каждого маркера. Давайте попробуем последний вариант, чтобы сделать график более интересным.

Измените ваш файл main.py. Мы создадим массив sizes и передадим его параметру s в функции plt.scatter().

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])

## Create scatter plot with custom sizes
plt.scatter(x, y, s=sizes)

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

print("Scatter plot with custom sizes saved to scatter_plot_sizes.png")

В обновленном коде мы добавили массив sizes и изменили вызов plt.scatter() на plt.scatter(x, y, s=sizes). Теперь каждая точка будет отображаться с соответствующим ей размером из массива sizes.

Запустите скрипт снова, чтобы увидеть изменения:

python3 main.py

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

Scatter plot with custom sizes

Изменение цвета маркера с помощью параметра c

На этом шаге мы настроим цвет маркеров. Подобно размеру, вы можете управлять цветом с помощью параметра c в функции plt.scatter().

Вы можете передать одно название цвета (например, 'red'), чтобы все маркеры имели одинаковый цвет, или массив цветов, чтобы каждому маркеру присвоить определенный цвет. Давайте присвоим каждой точке уникальный цвет.

Обновите ваш файл main.py, чтобы включить массив colors и передать его параметру c.

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot with custom sizes and colors
plt.scatter(x, y, s=sizes, c=colors)

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

print("Scatter plot with custom colors saved to scatter_plot_colors.png")

Теперь мы добавили массив colors, содержащий названия цветов, и обновили вызов функции до plt.scatter(x, y, s=sizes, c=colors).

Выполните скрипт из терминала:

python3 main.py

Откройте файл scatter_plot_colors.png еще раз. Вы увидите красочную диаграмму рассеяния, где каждая точка имеет разный размер и цвет, как определено в наших массивах.

Scatter plot with custom colors

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

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

Добавление сетки в Matplotlib очень просто. Вам нужно всего лишь вызвать функцию plt.grid() перед сохранением графика. По умолчанию plt.grid(True) отобразит сетку.

Давайте добавим это в наш скрипт. Измените main.py, чтобы включить вызов plt.grid().

import numpy as np
import matplotlib.pyplot as plt

## Data for plotting
x = np.array([5, 7, 8, 7, 2, 17, 2, 9, 4, 11, 12, 9, 6])
y = np.array([99, 86, 87, 88, 111, 86, 103, 87, 94, 78, 77, 85, 86])
sizes = np.array([20, 50, 100, 200, 500, 1000, 60, 90, 10, 300, 600, 800, 75])
colors = np.array(["red", "green", "blue", "yellow", "pink", "black", "orange", "purple", "beige", "brown", "gray", "cyan", "magenta"])

## Create scatter plot
plt.scatter(x, y, s=sizes, c=colors)

## Add a grid
plt.grid(True)

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

print("Scatter plot with grid saved to scatter_plot_grid.png")

Мы добавили plt.grid(True) непосредственно перед plt.savefig(). Это указывает Matplotlib нарисовать сетку на графике.

Запустите финальную версию вашего скрипта:

python3 main.py

Теперь проверьте изображение scatter_plot_grid.png. Ваш график теперь должен иметь сетку на фоне, завершая нашу настроенную диаграмму рассеяния.

Scatter plot with grid

Резюме

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

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

  • Генерации данных для построения графиков с использованием NumPy.
  • Создании базовой диаграммы рассеяния с помощью plt.scatter().
  • Настройке размеров маркеров с помощью параметра s.
  • Изменении цветов маркеров с помощью параметра c.
  • Добавлении сетки на график с помощью plt.grid().
  • Сохранении графиков в файл с помощью plt.savefig().

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