Как создать цветовую карту на основе ваших данных в Matplotlib: пошаговое руководство?

Matplotlib – мощная библиотека Python для визуализации данных. Одним из ключевых элементов визуализации является цветовая карта (colormap), позволяющая отображать значения данных с помощью цветов. В этой статье мы рассмотрим, как создавать пользовательские цветовые карты в Matplotlib, адаптированные под ваши конкретные данные и задачи.

Основы цветовых карт в Matplotlib

Что такое цветовая карта и зачем она нужна?

Цветовая карта (colormap) – это соответствие между значениями данных и цветами. Она позволяет визуально представлять числовые данные, где цвет отражает величину значения. Использование подходящей цветовой карты может значительно улучшить восприятие данных и выявить скрытые закономерности.

Обзор встроенных цветовых карт в Matplotlib

Matplotlib предоставляет большой выбор встроенных цветовых карт, таких как 'viridis', 'magma', 'coolwarm' и другие. Полный список доступен в документации Matplotlib. Их можно использовать, просто указав имя цветовой карты при создании графика.

import matplotlib.pyplot as plt
import numpy as np

data = np.random.rand(10, 10)
plt.imshow(data, cmap='viridis')
plt.colorbar()
plt.show()

Создание пользовательской цветовой карты с помощью ListedColormap

ListedColormap позволяет создать цветовую карту на основе заданного списка цветов. Это полезно, когда вам нужны дискретные цвета, представляющие определенные категории или диапазоны значений.

Определение списка цветов для вашей цветовой карты

Определите список цветов в формате RGB, RGBA или шестнадцатеричном формате. Например:

import matplotlib.colors

colors = ['red', 'green', 'blue']

Применение ListedColormap к графикам и диаграммам

Используйте ListedColormap для создания цветовой карты и примените ее к вашему графику. Нормировка данных может быть необходима, чтобы сопоставить значения данных с цветами.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import ListedColormap, BoundaryNorm

data = np.random.randint(0, 3, size=(10, 10))

# Example 1: Create ListedColormap using List
colors = ['red', 'green', 'blue']
cmap = ListedColormap(colors)

# Example 2: Create ListedColormap using hex codes
hex_colors = ['#FF0000', '#00FF00', '#0000FF']

# bounds define the ranges for each color
bounds = [0, 1, 2, 3]
norm = BoundaryNorm(bounds, cmap.N) # Normalize data to the colormap

plt.imshow(data, cmap=cmap, norm=norm)
plt.colorbar(ticks=bounds)
plt.show()

Создание градиентной цветовой карты с помощью LinearSegmentedColormap

LinearSegmentedColormap позволяет создавать плавные градиентные цветовые карты, определяя сегменты и цвета для перехода между ними. Это подходит для представления непрерывных данных.

Реклама

Принципы работы LinearSegmentedColormap

LinearSegmentedColormap принимает словарь, определяющий сегменты цветовой карты. Каждый сегмент задает изменение цвета (R, G, B) в диапазоне от 0 до 1.

Настройка сегментов и цветов для плавного перехода

Определите словарь сегментов, указав значения для красного, зеленого и синего каналов в каждой точке перехода.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.colors import LinearSegmentedColormap

cdict = {
    'red':   [[0.0, 0.0, 0.0],
              [0.5, 1.0, 1.0],
              [1.0, 1.0, 1.0]],

    'green': [[0.0, 0.0, 0.0],
              [0.5, 1.0, 1.0],
              [1.0, 0.0, 0.0]],

    'blue':  [[0.0, 1.0, 1.0],
              [0.5, 0.0, 0.0],
              [1.0, 0.0, 0.0]]
}

cm = LinearSegmentedColormap('my_colormap', cdict)

data = np.random.rand(10, 10)
plt.imshow(data, cmap=cm)
plt.colorbar()
plt.show()

Применение и настройка цветовых карт

Использование пользовательских цветовых карт с различными типами графиков (scatter, heatmap, contour)

Пользовательские цветовые карты можно применять к различным типам графиков в Matplotlib. Рассмотрим примеры для scatter, heatmap и contour.

  • Scatter plot:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.random.rand(50)
    y = np.random.rand(50)
    colors = np.random.rand(50)
    plt.scatter(x, y, c=colors, cmap='viridis')
    plt.colorbar()
    plt.show()
    
  • Heatmap:

    import matplotlib.pyplot as plt
    import numpy as np
    
    data = np.random.rand(10, 10)
    plt.imshow(data, cmap='magma')
    plt.colorbar()
    plt.show()
    
  • Contour plot:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x, y = np.meshgrid(np.linspace(-5, 5, 100), np.linspace(-5, 5, 100))
    z = np.sin(np.sqrt(x**2 + y**2))
    plt.contourf(x, y, z, cmap='coolwarm')
    plt.colorbar()
    plt.show()
    

Добавление и настройка цветовой шкалы (colorbar)

Цветовая шкала (colorbar) позволяет интерпретировать цвета на графике, показывая соответствие между цветами и значениями данных. Ее можно добавить с помощью функции plt.colorbar() и настроить с помощью различных параметров.

import matplotlib.pyplot as plt
import numpy as np

data = np.random.rand(10, 10)
img = plt.imshow(data, cmap='viridis')
cbar = plt.colorbar(img) # adding colorbar using short command
cbar.set_label('Значение')
plt.show()

# Example 2: Customizing Colorbar
cbar = plt.colorbar(img, ticks=[0, 0.25, 0.5, 0.75, 1]) # added ticks to colorbar
cbar.set_label('Значение')
plt.show()

Заключение

Создание пользовательских цветовых карт в Matplotlib позволяет более эффективно визуализировать данные и адаптировать графики под конкретные задачи. Используя ListedColormap и LinearSegmentedColormap, вы можете создавать как дискретные, так и градиентные цветовые карты, улучшая восприятие и анализ данных.


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