Диаграммы рассеяния (scatter plots) – мощный инструмент визуализации данных, позволяющий исследовать взаимосвязи между двумя и более переменными. В Matplotlib цветовая шкала (colormap) добавляет дополнительное измерение к этим диаграммам, отображая значения третьей переменной цветом. Это позволяет быстро выявлять закономерности и тренды, которые могли бы остаться незамеченными при использовании только координат точек. В этой статье мы рассмотрим все аспекты настройки и применения цветовых шкал в диаграммах рассеяния Matplotlib, от базовых концепций до продвинутых техник.
Основы Цветовых Шкал в Matplotlib для Диаграмм Рассеяния
Что такое цветовая шкала (colormap) и зачем она нужна в Matplotlib?
Цветовая шкала (colormap) в Matplotlib – это отображение числовых значений в цвета. Она позволяет визуализировать третье измерение данных на диаграмме рассеяния, где положение точки определяется двумя переменными. Использование цветовой шкалы значительно улучшает восприятие данных, позволяя быстро идентифицировать кластеры, выбросы и общие тренды.
Обзор основных встроенных цветовых шкал: viridis, plasma, magma, cividis, jet и другие.
Matplotlib предлагает широкий выбор встроенных цветовых шкал. Некоторые из наиболее популярных:
-
viridis: Воспринимается как линейно возрастающая по яркости, подходит для большинства типов данных. Считается стандартом де-факто. -
plasma: Аналогичнаviridis, но с более яркими цветами, что может быть полезно для выделения деталей. -
magma: Переходит от черного к белому через оттенки красного и оранжевого, хорошо подходит для отображения интенсивности. -
cividis: Разработана для людей с нарушениями цветового зрения, обеспечивает хорошую различимость цветов. -
jet: Старая цветовая шкала, которую часто избегают из-за неравномерности восприятия цветов и проблем с различимостью.
Выбор цветовой шкалы зависит от типа данных и цели визуализации. Важно выбирать шкалу, которая интуитивно понятна и не вводит зрителя в заблуждение. Например, для представления температуры часто используют шкалы, переходящие от синего (холод) к красному (горячо).
Применение Цветовых Шкал к Диаграммам Рассеяния: Пошаговое Руководство
Базовый пример: создание диаграммы рассеяния с применением цветовой шкалы по умолчанию.
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)
plt.colorbar(label='Значение Z') # Добавляем цветовую шкалу
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Диаграмма Рассеяния с Цветовой Шкалой по Умолчанию')
plt.show()
В этом примере мы создаем диаграмму рассеяния, где цвет каждой точки определяется значением z. Matplotlib автоматически выбирает цветовую шкалу по умолчанию (viridis).
Настройка цветовой шкалы с использованием аргумента cmap в plt.scatter.
Аргумент 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='plasma')
plt.colorbar(label='Значение Z', cmap='plasma') # Для согласования, укажем cmap и в colorbar
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Диаграмма Рассеяния с Цветовой Шкалой Plasma')
plt.show()
В этом примере мы явно указали использование цветовой шкалы plasma. 🎨
Продвинутые Настройки Цветовой Шкалы: Отображение Значений Данных
Назначение цвета точкам на диаграмме рассеяния в зависимости от значений: использование аргумента c.
Аргумент c в plt.scatter определяет, какие значения будут отображаться цветом. Он может быть массивом числовых значений, соответствующих каждой точке на диаграмме.
Нормализация данных для правильного отображения на цветовой шкале: Normalize и Colormap.
Иногда необходимо нормализовать данные, чтобы они правильно отображались на цветовой шкале. Это особенно важно, если значения имеют большой разброс или выходят за пределы диапазона, который ожидается цветовой шкалой. Для этого можно использовать классы Normalize и Colormap из модуля matplotlib.colors.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import Normalize, Colormap
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100) * 100 # Значения от 0 до 100
# Нормализуем данные
norm = Normalize(vmin=0, vmax=100)
plt.scatter(x, y, c=z, cmap='viridis', norm=norm)
plt.colorbar(label='Значение Z')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Диаграмма Рассеяния с Нормализацией Данных')
plt.show()
В этом примере мы нормализовали значения z в диапазоне от 0 до 100, чтобы они правильно отображались на цветовой шкале viridis. Если не указать norm, matplotlib будет автоматически нормализовать данные, но явное задание позволяет контролировать этот процесс.
Создание и Настройка Пользовательских Цветовых Шкал
Создание градиента цвета с использованием LinearSegmentedColormap.
Matplotlib позволяет создавать пользовательские цветовые шкалы с помощью класса LinearSegmentedColormap. Это дает полный контроль над цветами, используемыми для визуализации данных.
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap
# Определяем цвета для цветовой шкалы
colors = ["red", "yellow", "green", "cyan", "blue"]
# Создаем пользовательскую цветовую шкалу
cmap = LinearSegmentedColormap.from_list("my_colormap", colors, N=256)
x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)
plt.scatter(x, y, c=z, cmap=cmap)
plt.colorbar(label='Значение Z')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Диаграмма Рассеяния с Пользовательской Цветовой Шкалой')
plt.show()
В этом примере мы создали пользовательскую цветовую шкалу, переходящую от красного к синему через желтый, зеленый и голубой цвета. 🌈
Примеры применения пользовательских цветовых шкал для различных типов данных.
Пользовательские цветовые шкалы особенно полезны, когда нужно подчеркнуть определенные особенности данных или использовать цвета, соответствующие конкретной области применения. Например, для визуализации высот на карте можно создать шкалу, переходящую от зеленого (низменности) к коричневому (горы).
Заключение
Цветовая шкала – мощный инструмент для улучшения визуализации данных на диаграммах рассеяния в Matplotlib. Правильный выбор и настройка цветовой шкалы позволяют эффективно передавать информацию и выявлять скрытые закономерности. В этой статье мы рассмотрели основы цветовых шкал, их применение к диаграммам рассеяния, продвинутые настройки и создание пользовательских цветовых шкал. Экспериментируйте с различными вариантами, чтобы найти наиболее подходящий способ визуализации ваших данных! 📊