Matplotlib – мощная библиотека Python для визуализации данных. Одним из эффективных способов представления многомерных данных на двумерных или трехмерных графиках является использование цветовых карт. Цветовая карта позволяет закодировать дополнительную информацию о каждой точке, отображая ее цвет в соответствии со значением определенной переменной. Это руководство предоставит вам полное понимание того, как использовать цветовые карты для отображения точек на графиках Matplotlib, начиная с основ и заканчивая продвинутыми техниками.
Основы отображения точек с цветовой картой в Matplotlib
Цветовая карта (colormap) – это непрерывный градиент цветов, который используется для отображения значений переменной в виде цветов. Matplotlib предоставляет широкий выбор встроенных цветовых карт, а также возможность создавать собственные.
Базовый пример: отображение точек с использованием цветовой карты и функции scatter
Функция scatter в Matplotlib идеально подходит для отображения точек. С помощью аргумента c можно задать значения, которые будут отображаться цветом, а с помощью cmap – выбрать цветовую карту.
import matplotlib.pyplot as plt
import numpy as np
# Генерируем случайные данные
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100) # Значения для цветовой кодировки
# Создаем диаграмму рассеяния с цветовой картой
plt.scatter(x, y, c=z, cmap='viridis')
plt.colorbar(label='Значение z') # Добавляем цветовую шкалу
plt.xlabel('x')
plt.ylabel('y')
plt.title('Диаграмма рассеяния с цветовой картой')
plt.show()
Этот код создаст диаграмму рассеяния, где цвет каждой точки зависит от значения z. Цветовая шкала справа от графика показывает соответствие между цветом и значением z.
Настройка основных параметров: cmap, c, и другие параметры функции scatter
Функция scatter принимает множество параметров для настройки внешнего вида графика:
-
c: Массив значений, определяющих цвет каждой точки. Может быть одномерным (для цветовой кодировки) или двумерным (для RGB или RGBA цветов). -
cmap: Имя цветовой карты (например, ‘viridis’, ‘magma’, ‘coolwarm’). -
s: Размер точек. -
marker: Форма маркера (например, ‘o’, ‘x’, ‘+’). -
alpha: Прозрачность точек. -
norm: ОбъектNormalize, определяющий отображение значений в цветовой диапазон (0, 1). -
vmin,vmax: Минимальное и максимальное значения для цветовой шкалы. Если не указаны, используются минимальное и максимальное значения в массивеc.
Пример:
plt.scatter(x, y, c=z, cmap='plasma', s=50, alpha=0.5, vmin=0, vmax=1)
plt.colorbar(label='Значение z')
plt.show()
Выбор и применение различных типов цветовых карт
Matplotlib предлагает три основных типа цветовых карт:
-
Последовательные (Sequential): Изменение яркости одного цвета (например, ‘Greens’, ‘Blues’, ‘magma’). Подходят для отображения данных, которые изменяются в одном направлении.
-
Расходящиеся (Diverging): Два разных цвета, сходящиеся к нейтральному цвету посередине (например, ‘coolwarm’, ‘RdBu’). Используются для отображения данных, имеющих центральное значение (например, отклонения от среднего).
-
Циклические (Cyclic): Цвета переходят друг в друга по кругу (например, ‘hsv’, ‘twilight’). Подходят для отображения циклических данных (например, углов или времени суток).
Обзор различных типов цветовых карт: последовательные, расходящиеся, циклические
-
Sequential:
'viridis','plasma','Greens','Blues','gray','binary'.Реклама -
Diverging:
'coolwarm','RdBu','PiYG','Spectral'. -
Cyclic:
'hsv','twilight','rainbow'. -
Qualitative:
'Pastel1','Set1','tab10'.
Рекомендации по выбору цветовой карты в зависимости от типа данных
Выбор цветовой карты критически важен для эффективной визуализации. Вот несколько рекомендаций:
-
Для отображения величин, возрастающих в одном направлении, используйте последовательные цветовые карты.
-
Если данные имеют положительные и отрицательные значения (или отклонения от некоторого центрального значения), используйте расходящиеся цветовые карты.
-
Для циклических данных используйте циклические цветовые карты.
-
Избегайте цветовых карт, которые могут быть трудно различимы для людей с дальтонизмом.
viridis– хороший выбор, поскольку она хорошо воспринимается большинством людей.
Настройка цветовых шкал и добавление легенды (colorbar)
Цветовая шкала (colorbar) показывает соответствие между цветом и значением данных. Важно правильно настроить цветовую шкалу, чтобы она была информативной и легко читаемой.
Создание и настройка цветовой шкалы: масштабирование, лимиты, метки
Цветовую шкалу можно настроить с помощью функции plt.colorbar():
-
label: Заголовок цветовой шкалы. -
ticks: Позиции меток на цветовой шкале. -
format: Формат меток (например, ‘%.2f’ для двух знаков после запятой). -
extend: Указывает, должны ли быть добавлены стрелки на концах colorbar, если значения выходят за пределы установленныхvminиvmax.
Пример:
plt.scatter(x, y, c=z, cmap='viridis')
cbar = plt.colorbar(label='Значение z', ticks=[0, 0.25, 0.5, 0.75, 1])
cbar.ax.set_yticklabels(['0.0', '0.25', '0.50', '0.75', '1.0'])
plt.show()
Добавление и настройка легенды (colorbar) для интерпретации данных
extend параметр позволяет добавить стрелки на концах цветовой шкалы, показывающие, что данные выходят за пределы заданного диапазона. Значения extend могут быть: 'neither', 'both', 'min', 'max'.
plt.scatter(x, y, c=z, cmap='viridis', vmin=0.2, vmax=0.8)
plt.colorbar(label='Значение z', extend='both')
plt.show()
Продвинутые техники и примеры использования
Отображение точек с цветовой картой в 3D графиках
Цветовые карты можно использовать и в трехмерных графиках. Для этого используется функция scatter из модуля mpl_toolkits.mplot3d.
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)
c = np.random.rand(100)
img = ax.scatter(x, y, z, c=c, cmap='viridis')
fig.colorbar(img)
plt.show()
Примеры работы с данными из numpy и pandas для визуализации с цветовыми картами
Часто данные для визуализации хранятся в массивах NumPy или DataFrame pandas. Рассмотрим пример:
import pandas as pd
# Создаем DataFrame
data = pd.DataFrame({'x': np.random.rand(100),
'y': np.random.rand(100),
'z': np.random.rand(100)})
# Отображаем точки с цветовой картой, используя данные из DataFrame
plt.scatter(data['x'], data['y'], c=data['z'], cmap='coolwarm')
plt.colorbar(label='Значение z')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
Заключение
Использование цветовых карт в Matplotlib – мощный инструмент для визуализации многомерных данных. Правильный выбор цветовой карты и ее настройка позволяют создавать информативные и легко читаемые графики. Экспериментируйте с различными параметрами и типами цветовых карт, чтобы найти наиболее подходящий способ представления ваших данных.