Отображение точек на графиках Matplotlib с использованием цветовых карт: полное руководство

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 – мощный инструмент для визуализации многомерных данных. Правильный выбор цветовой карты и ее настройка позволяют создавать информативные и легко читаемые графики. Экспериментируйте с различными параметрами и типами цветовых карт, чтобы найти наиболее подходящий способ представления ваших данных.


Добавить комментарий