
Scatter plot (диаграмма рассеяния) – это один из самых эффективных способов визуализации зависимости между двумя количественными переменными. В Python для создания таких диаграмм обычно используется библиотека matplotlib, которая предоставляет удобные инструменты для работы с графиками. В этой статье будут рассмотрены шаги по построению scatter plot и примеры кода для различных ситуаций.
1. Основы работы с matplotlib
Для начала, чтобы построить scatter plot, нужно импортировать библиотеку matplotlib. Используем модуль pyplot, который отвечает за создание графиков. Основной функцией для построения диаграммы рассеяния является scatter(). Этот метод принимает два основных аргумента: координаты точек по осям X и Y.
2. Простой пример: scatter plot для случайных данных
Для демонстрации создадим случайные данные с использованием библиотеки numpy, а затем построим scatter plot. Этот пример показывает, как легко можно начать визуализировать данные, не прибегая к сложной настройке.
3. Дополнительные настройки диаграммы
Помимо базового построения, matplotlib позволяет настроить множество параметров диаграммы: цвет точек, размер, метки осей, легенду и другие элементы. Например, изменение цвета точек можно выполнить с помощью параметра c, а размер точек – с помощью параметра s.
Как импортировать библиотеки для создания scatter plot

Для построения scatter plot в Python необходимо импортировать несколько ключевых библиотек. Основная из них – matplotlib, которая предоставляет функции для визуализации данных. Для работы с массивами данных часто используется numpy, а для манипуляций с табличными данными удобно применять pandas.
Вот пример базового импорта:
import matplotlib.pyplot as plt import numpy as np import pandas as pd
1. matplotlib – основная библиотека для визуализации данных. Функция plt.scatter() используется для построения scatter plot. Важно, что matplotlib также имеет встроенные функции для настройки осей, заголовков и других элементов графика.
2. numpy – библиотека для работы с массивами данных. Для создания случайных данных или вычислений, которые будут отображаться на scatter plot, можно использовать numpy.random.
3. pandas – если данные находятся в табличном формате (например, в CSV или Excel), то pandas поможет эффективно загружать и обрабатывать эти данные перед визуализацией.
Пример работы с pandas для импорта данных и построения графика:
import pandas as pd
# Загрузка данных
data = pd.read_csv('data.csv')
# Построение scatter plot
plt.scatter(data['x'], data['y'])
plt.show()
После импорта библиотек можно приступить к созданию scatter plot, комбинируя эти инструменты в зависимости от структуры данных.
Построение базового scatter plot с использованием matplotlib
Для создания простого scatter plot в Python с помощью библиотеки matplotlib достаточно выполнить несколько шагов. В этом примере будет показано, как визуализировать зависимость между двумя переменными, используя данные в виде списков или массивов.
Первоначально необходимо импортировать matplotlib и подготовить данные для графика. В этом примере используем случайные данные для оси X и оси Y:
import matplotlib.pyplot as plt
import numpy as np
# Генерация случайных данных
x = np.random.rand(50)
y = np.random.rand(50)
# Построение графика
plt.scatter(x, y)
# Настройка осей и заголовка
plt.xlabel('Ось X')
plt.ylabel('Ось Y')
plt.title('Пример базового Scatter Plot')
# Отображение графика
plt.show()
Ключевой момент в коде – использование функции scatter(x, y), где x и y – это массивы данных, которые будут отображаться на графике. Важной особенностью является то, что значения оси X и Y могут быть любыми числовыми данными.
По умолчанию точки будут отображаться синими кругами. Вы можете изменить стиль точек, добавив параметры в функцию scatter(). Например, для изменения размера и цвета точек можно использовать следующие параметры:
plt.scatter(x, y, s=100, c='red', alpha=0.5)
Здесь s=100 устанавливает размер точек, c='red' меняет их цвет на красный, а alpha=0.5 задаёт полупрозрачность точек.
Также стоит обратить внимание на настройки осей. Функции xlabel() и ylabel() позволяют задавать подписи для осей, а title() – добавлять заголовок к графику.
Этот базовый пример легко адаптируется для более сложных случаев, например, с использованием категориальных данных или различных цветов для точек в зависимости от значений.
Использование данных pandas для построения scatter plot
Для построения scatter plot в Python с использованием pandas, данные обычно загружаются в DataFrame, который затем используется для визуализации с помощью библиотеки Matplotlib. Эта комбинация позволяет быстро и эффективно работать с данными и создавать графики.
Пример загрузки данных в pandas и построения scatter plot:
import pandas as pd
import matplotlib.pyplot as plt
# Загрузка данных в DataFrame
data = pd.DataFrame({
'x': [1, 2, 3, 4, 5],
'y': [5, 4, 3, 2, 1]
})
# Построение scatter plot
plt.scatter(data['x'], data['y'])
plt.title("Пример scatter plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
В этом примере данные создаются вручную, но чаще всего они загружаются из файлов CSV или баз данных. В pandas для этого используется метод read_csv().
Для более сложных графиков можно настроить визуализацию:
- Настроить цвет точек:
plt.scatter(data['x'], data['y'], c='red') - Использовать размер точек:
plt.scatter(data['x'], data['y'], s=100) - Добавить прозрачность:
plt.scatter(data['x'], data['y'], alpha=0.5)
Если необходимо работать с большим объемом данных, pandas и Matplotlib эффективно справляются с этим, позволяя визуализировать зависимости между переменными. При этом стоит учитывать размер данных и использование фильтров для лучшего отображения ключевых элементов.
Можно также использовать pandas plot() для построения scatter plot:
data.plot(kind='scatter', x='x', y='y') plt.show()
Этот способ является более интегрированным с pandas, но для более гибкой настройки визуализации рекомендуется использовать Matplotlib напрямую.
Настройка осей и меток на scatter plot
Для настройки осей в scatter plot используется библиотека Matplotlib, которая позволяет гибко изменять параметры осей, включая их масштаб, пределы и метки.
Чтобы изменить диапазон значений осей, используйте функции plt.xlim() и plt.ylim(). Эти методы задают минимальные и максимальные значения на осях X и Y соответственно. Например, чтобы установить ось X от 0 до 10, а ось Y от -5 до 5, используйте следующий код:
plt.xlim(0, 10) plt.ylim(-5, 5)
Для того чтобы установить более конкретные метки на осях, можно использовать plt.xticks() и plt.yticks(). Эти функции позволяют задать, какие значения будут отображаться на осях. Например:
plt.xticks([0, 2, 4, 6, 8, 10]) plt.yticks([-5, -3, -1, 1, 3, 5])
Если нужно задать пользовательские метки для осей, можно передать второй аргумент в виде списка строк. Например:
plt.xticks([0, 5, 10], ['Начало', 'Половина', 'Конец'])
Для изменения формата меток осей используется plt.gca().xaxis.set_major_formatter(), который позволяет задать форматирование чисел на осях. Например, чтобы отображать числа с двумя знаками после запятой:
import matplotlib.ticker as ticker
plt.gca().xaxis.set_major_formatter(ticker.FormatStrFormatter('%0.2f'))
Для улучшения читаемости графика стоит использовать ротацию меток. Для этого применяется параметр rotation в функции plt.xticks() или plt.yticks():
plt.xticks(rotation=45)
Если оси имеют слишком много меток, можно автоматически настроить их интервал с помощью MaxNLocator из модуля matplotlib.ticker. Этот инструмент позволяет задать максимальное количество меток на оси:
import matplotlib.ticker as ticker plt.gca().xaxis.set_major_locator(ticker.MaxNLocator(6))
Все эти методы позволяют эффективно управлять визуализацией данных и сделать график более информативным и удобным для восприятия.
Добавление цветовых и размерных градиентов на scatter plot
Чтобы визуализировать дополнительные данные на scatter plot, можно использовать цветовые и размерные градиенты для точек. Это позволяет лучше отображать связи между переменными и улучшает восприятие информации.
В Python для добавления цветовых и размерных градиентов на scatter plot используется библиотека matplotlib. Важный момент – необходимо правильно настроить параметры цвета и размера точек, чтобы они отображали дополнительные метрики данных, например, категориальные или числовые переменные.
Цветовой градиент
Для задания цветового градиента в scatter plot можно использовать параметр c в функции scatter(). В качестве значений для c можно передать массив чисел или категориальные значения, которые будут преобразованы в цвета через карту цветов (colormap).
Пример кода для цветового градиента:
import matplotlib.pyplot as plt import numpy as np # Данные x = np.random.rand(100) y = np.random.rand(100) colors = np.random.rand(100) # Цвета, основанные на случайных значениях # Построение графика plt.scatter(x, y, c=colors, cmap='viridis') plt.colorbar() # Добавление цветовой шкалы plt.show()
В этом примере цвета точек изменяются в зависимости от значений массива colors, который представляет собой случайные числа. cmap='viridis' задает палитру цветов для отображения.
Размерный градиент
Размер точек на графике также можно варьировать с помощью параметра s в функции scatter(). В этом случае в качестве значений для s передаются числовые значения, определяющие размер каждой точки.
Пример кода для размерного градиента:
sizes = 1000 * np.random.rand(100) # Размеры, пропорциональные случайным значениям # Построение графика plt.scatter(x, y, s=sizes, c=colors, cmap='viridis') plt.colorbar() # Добавление цветовой шкалы plt.show()
Здесь параметр s=sizes определяет размеры точек на основе массива sizes. Чем больше значение в этом массиве, тем крупнее точка на графике.
Сочетание цветового и размерного градиента
Можно комбинировать оба градиента – и цвет, и размер. Для этого достаточно передать соответствующие массивы в параметры c и s функции scatter().
Пример кода для комбинированного градиента:
# Построение комбинированного графика plt.scatter(x, y, s=sizes, c=colors, cmap='viridis') plt.colorbar() # Цветовая шкала plt.show()
Таблица с параметрами для настройки градиентов
| Параметр | Описание |
|---|---|
c |
Массив значений, определяющих цвет точек. Может быть числовым или категориальным. |
cmap |
Колорная палитра для отображения цветов. Например, 'viridis', 'plasma', 'inferno'. |
s |
Массив значений, определяющих размеры точек. Размеры пропорциональны значениям в массиве. |
alpha |
Прозрачность точек. Значение от 0 (полностью прозрачные) до 1 (непрозрачные). |
edgecolors |
Цвет границ точек. Может быть строкой, определяющей цвет, или массивом для каждой точки. |
Использование этих параметров позволяет значительно улучшить визуализацию данных и сделать график более информативным.
Использование различных маркеров для точек scatter plot

Для создания наглядных и информативных графиков в Python с использованием scatter plot важно правильно выбирать маркеры. Каждый маркер влияет на восприятие данных, улучшая визуальное представление. В библиотеке Matplotlib предусмотрен широкий выбор маркеров, каждый из которых имеет свои особенности.
Для изменения маркера в scatter plot используется параметр marker. Вот несколько популярных типов маркеров:
- ‘o’ – стандартный круглый маркер. Он идеально подходит для отображения точек на графиках, где нужно выделить данные без лишней детализации.
- ‘s’ – квадратный маркер. Хорошо подходит для выделения групп данных или при необходимости визуализировать различия между категориями.
- ‘^’ – треугольник. Часто используется для указания направления или для отображения разных типов данных в одном графике.
- ‘D’ – ромбовидный маркер. Эффективен для визуализации данных с высокой плотностью точек или при отображении неравномерных распределений.
- ‘*’ – звездочка. Хорошо подходит для выделения важных точек на графиках с большим количеством данных.
- ‘+’ и ‘x’ – крестики и плюсы. Эти маркеры идеально подходят для анализа пересечений или для случаев, когда важно выделить точку с определённой меткой.
Для примера, чтобы использовать разные маркеры для разных наборов данных, можно применить следующий код:
import matplotlib.pyplot as plt
x1 = [1, 2, 3, 4, 5]
y1 = [5, 4, 3, 2, 1]
x2 = [1, 2, 3, 4, 5]
y2 = [1, 2, 3, 4, 5]
plt.scatter(x1, y1, marker='o', color='red', label='Маркеры - круги')
plt.scatter(x2, y2, marker='s', color='blue', label='Маркеры - квадраты')
plt.legend()
plt.show()
При необходимости можно дополнительно настроить размеры маркеров с помощью параметра s, который указывает площадь маркера в пикселях. Например, для изменения размера маркеров можно использовать следующий код:
plt.scatter(x1, y1, marker='^', s=100, color='green', label='Маркеры - треугольники')
Использование разных маркеров позволяет сделать графики более информативными и облегчить восприятие больших объемов данных. Также можно комбинировать несколько маркеров для различных категорий, улучшая визуальное разделение элементов на графике.
Как добавить сетку и аннотации на scatter plot
Для улучшения визуализации scatter plot в Python часто используют сетку и аннотации. Эти элементы помогают выделить ключевые точки и упростить восприятие данных.
Добавление сетки
Чтобы добавить сетку на график, используется метод plt.grid() из библиотеки Matplotlib. По умолчанию сетка отображается для всех осей, но можно настроить видимость сетки отдельно для каждой оси.
- Простой способ включить сетку:
import matplotlib.pyplot as plt
# Пример данных
x = [1, 2, 3, 4, 5]
y = [10, 20, 25, 30, 35]
plt.scatter(x, y)
plt.grid(True) # Включение сетки
plt.show()
- Для отображения сетки только на одной оси, используйте параметры
axis:
plt.grid(True, axis='x') # Сетка только по оси X
plt.grid(True, axis='y') # Сетка только по оси Y
Добавление аннотаций
Аннотации помогают выделить важные точки на графике. В Matplotlib для этого используется метод plt.annotate().
- Для добавления аннотации к точке, указывайте координаты, текст и опционально стрелку:
plt.scatter(x, y)
# Добавление аннотации
plt.annotate('Точка 1', xy=(x[0], y[0]), xytext=(x[0]+0.5, y[0]+5),
arrowprops=dict(facecolor='blue', shrink=0.05))
plt.show()
- Можно настроить параметры стрелки с помощью
arrowprops, например:
arrowprops=dict(facecolor='green', edgecolor='red', arrowstyle='->')
Важно, чтобы аннотации не перекрывали важные данные на графике. Подбирайте координаты аннотаций так, чтобы они не мешали восприятию других точек.
Сохранение и экспорт scatter plot в различных форматах
Для сохранения scatter plot в различных форматах, библиотека Matplotlib предоставляет функцию savefig(), которая позволяет экспортировать график в несколько популярных форматов, таких как PNG, PDF, SVG, EPS и другие. Этот метод используется после построения графика, и его синтаксис следующий:
plt.savefig('имя_файла.расширение')
Где имя_файла – это имя выходного файла, а расширение определяет формат. Например, чтобы сохранить график в формате PNG, используйте:
plt.savefig('scatter_plot.png')
Для более точной настройки экспорта графика можно использовать дополнительные параметры функции savefig(). Например, параметр dpi определяет разрешение изображения (по умолчанию 100 DPI). Чтобы увеличить качество изображения, установите его на более высокое значение:
plt.savefig('scatter_plot.png', dpi=300)
Для экспорта в формат SVG, который подходит для векторных графиков, можно использовать следующий код:
plt.savefig('scatter_plot.svg')
Для создания графиков с прозрачным фоном, используйте параметр transparent=True. Это полезно, если необходимо вставить изображение на различный фон:
plt.savefig('scatter_plot.png', transparent=True)
При экспорте графиков в формат PDF или EPS, данные сохраняются в векторной форме, что позволяет масштабировать изображение без потери качества. Это особенно важно для научных публикаций, где требуется четкость на любом уровне увеличения:
plt.savefig('scatter_plot.pdf')
Важно помнить, что для каждого формата могут быть свои особенности. Например, векторные форматы (SVG, PDF, EPS) не поддерживают альфа-канал, поэтому прозрачность фона не будет учтена в этих форматах. В таких случаях рекомендуется использовать PNG.
Кроме того, следует учитывать, что сохранение графика в формате TIFF, хотя и поддерживается Matplotlib, может привести к большим размерам файла. Для большинства случаев PNG или JPEG являются предпочтительными для растровых изображений, а PDF или SVG для векторных.
В конечном итоге, выбор формата зависит от ваших нужд: если вам важна масштабируемость, выбирайте векторные форматы (PDF, SVG); если размер файла и качество имеют значение, используйте растровые (PNG, JPEG).
