Что такое график рассеяния и когда его использовать
График рассеяния (scatter plot) – это тип диаграммы, который отображает значения двух переменных в виде точек на координатной плоскости. Каждый маркер (точка) представляет собой отдельное наблюдение. Графики рассеяния полезны для:
- Выявления корреляций между двумя переменными.
- Обнаружения кластеров или групп в данных.
- Идентификации выбросов.
- Визуализации распределения данных.
Графики рассеяния особенно полезны при анализе данных в областях, таких как интернет-маркетинг (например, зависимость между расходами на рекламу и конверсией), контекстная реклама (например, зависимость между ставкой и позицией объявления) или веб-программирование (например, зависимость между временем загрузки страницы и отказом).
Основы создания графика рассеяния с использованием plt.scatter()
В Matplotlib для создания графиков рассеяния используется функция plt.scatter(). Базовый синтаксис выглядит следующим образом:
import matplotlib.pyplot as plt
import numpy as np
from typing import List, Tuple
def create_scatter_plot(x: List[float], y: List[float]) -> None:
"""Creates a simple scatter plot.
Args:
x: List of x-coordinates.
y: List of y-coordinates.
"""
plt.scatter(x, y)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Simple Scatter Plot")
plt.show()
# Example usage
x_data = np.random.rand(50)
y_data = np.random.rand(50)
create_scatter_plot(x_data, y_data)
Основы работы с цветом в Matplotlib scatter
Параметр c в plt.scatter(): обзор
Ключевой параметр для управления цветом точек в plt.scatter() – это параметр c. Он может принимать различные значения, определяющие цвет точек:
- Строка, представляющая название цвета (например,
'red','green','blue'). - Шестнадцатеричное представление цвета (например,
'#FF0000'для красного). - Кортеж RGB или RGBA (например,
(1, 0, 0)для красного,(0, 1, 0, 0.5)для полупрозрачного зеленого). - Массив значений, которые будут отображены с использованием цветовой карты (colormap).
Использование цветовых карт (colormaps)
Цветовые карты (colormaps) – это способ сопоставления числовых значений с цветами. Matplotlib предоставляет множество встроенных цветовых карт (например, 'viridis', 'plasma', 'magma', 'coolwarm'). Чтобы использовать цветовую карту, передайте массив числовых значений в параметр c и укажите название цветовой карты в параметре cmap:
import matplotlib.pyplot as plt
import numpy as np
from typing import List
def create_scatter_plot_with_colormap(x: List[float], y: List[float], z: List[float]) -> None:
"""Creates a scatter plot with colors based on a colormap.
Args:
x: List of x-coordinates.
y: List of y-coordinates.
z: List of values to map to colors.
"""
plt.scatter(x, y, c=z, cmap='viridis')
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot with Colormap")
plt.colorbar(label="Z Value") # Add a colorbar to show the mapping
plt.show()
# Example usage
x_data = np.random.rand(50)
y_data = np.random.rand(50)
z_data = np.random.rand(50)
create_scatter_plot_with_colormap(x_data, y_data, z_data)
Присвоение разного цвета каждой точке на графике рассеяния
Использование массива цветов для каждой точки
Для присвоения каждой точке своего цвета, необходимо передать в параметр c массив, где каждый элемент является представлением цвета (строка, hex-код или кортеж RGB/RGBA). Массив должен иметь ту же длину, что и массивы x и y.
import matplotlib.pyplot as plt
import numpy as np
from typing import List, Tuple
def create_scatter_plot_with_individual_colors(x: List[float], y: List[float], colors: List[str]) -> None:
"""Creates a scatter plot with individual colors for each point.
Args:
x: List of x-coordinates.
y: List of y-coordinates.
colors: List of colors, one for each point.
"""
plt.scatter(x, y, c=colors)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot with Individual Colors")
plt.show()
# Example usage
x_data = np.random.rand(50)
y_data = np.random.rand(50)
colors_data = ['red' if i % 2 == 0 else 'blue' for i in range(50)] # Alternate red and blue
create_scatter_plot_with_individual_colors(x_data, y_data, colors_data)
Применение логических условий для выбора цвета
Часто бывает необходимо окрашивать точки в зависимости от выполнения определенных условий. Это можно сделать, создав массив цветов на основе логических условий. Например, можно окрасить точки, соответствующие целевой аудитории в интернет-маркетинге, в один цвет, а остальные – в другой.
Пример: окрашивание точек в зависимости от значения их координаты
import matplotlib.pyplot as plt
import numpy as np
from typing import List
def create_scatter_plot_with_conditional_colors(x: List[float], y: List[float]) -> None:
"""Creates a scatter plot with colors based on a condition on the y-coordinate.
Args:
x: List of x-coordinates.
y: List of y-coordinates.
"""
colors = ['green' if yi > 0.5 else 'purple' for yi in y] # Green if y > 0.5, purple otherwise
plt.scatter(x, y, c=colors)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot with Conditional Colors")
plt.show()
# Example usage
x_data = np.random.rand(50)
y_data = np.random.rand(50)
create_scatter_plot_with_conditional_colors(x_data, y_data)
Дополнительные параметры настройки цвета
Изменение прозрачности (alpha) точек
Параметр alpha позволяет регулировать прозрачность точек. Значение alpha=1 (по умолчанию) означает полную непрозрачность, а alpha=0 – полную прозрачность. Прозрачность полезна для визуализации плотных графиков рассеяния.
plt.scatter(x, y, c=colors, alpha=0.5) # set alpha to 0.5
Использование параметра norm для нормализации цветовой шкалы
Параметр norm позволяет задать способ нормализации значений, отображаемых с помощью цветовой карты. Это может быть полезно, если значения имеют широкий диапазон или если необходимо подчеркнуть определенные значения.
Настройка цветовой шкалы (colorbar)
Для более понятной визуализации можно добавить цветовую шкалу (colorbar), которая показывает соответствие между цветами и значениями. Это делается с помощью функции plt.colorbar().
Примеры и продвинутые техники
Визуализация кластеров данных с разными цветами
В задачах кластеризации важно визуализировать полученные кластеры. Разным кластерам можно присвоить разные цвета, чтобы наглядно показать структуру данных. Например, в контекстной рекламе можно кластеризовать поисковые запросы и визуализировать их на графике рассеяния, окрашивая каждый кластер в свой цвет.
Создание интерактивных графиков с цветовым кодированием
С помощью библиотек, таких как plotly или bokeh, можно создавать интерактивные графики рассеяния, где цвет точек меняется в зависимости от выбранных параметров. Это позволяет пользователю исследовать данные более детально.
Оптимизация производительности при большом количестве точек
При визуализации большого количества точек (например, при анализе Big Data в интернет-маркетинге) производительность становится критичной. Для оптимизации можно использовать:
- Уменьшение размера маркеров (
sпараметр вplt.scatter()). - Использование параметра
rasterized=Trueдля преобразования графика в растровое изображение. - Выбор более эффективных цветовых карт.
- Агрегацию данных и отображение только агрегированных значений.