Обратная карта цветов в Matplotlib: использование в plot_surface
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для инвертирования цветовой схемы в matplotlib следует добавить к её названию суффикс _r
:
cmap_reversed = plt.cm.viridis_r # Теперь цветовая схема 'viridis' в обратном порядке!
Ее применение происходит следующим образом:
plt.imshow(data, cmap=cmap_reversed)
Дополнительные методы инверсии цветовой схемы
Помимо быстрого метода, существуют и другие подходы к инвертированию цветовой схемы в matplotlib, которые могут быть полезны в различных случаях применения.
Инвертирование встроенных цветовых схем
У каждой цветовой схемы, предустановленной в matplotlib, есть обратный аналог, обозначаемый суффиксом _r
. Например, для инвертирования цветовой схемы при использовании plot_surface
:
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
surface = ax.plot_surface(X, Y, Z, cmap='coolwarm_r')
plt.show()
Инвертирование схемы на лету
Иногда нужно изменить цветовую схему во время выполнения программы. Начиная с версии matplotlib 2.0 это можно выполнить с помощью метода reversed()
:
from matplotlib.pyplot import get_cmap
original_cmap = get_cmap('cividis')
reversed_cmap = original_cmap.reversed()
Инвертирование пользовательских цветовых схем
Те, кто предпочитает определять собственные цветовые схемы ListedColormap
или LinearSegmentedColormap
, могут также инвертировать их:
from matplotlib.colors import ListedColormap, LinearSegmentedColormap
listed_cmap = ListedColormap(['red', 'green', 'blue'])
listed_cmap_reversed = ListedColormap(listed_cmap.colors[::-1])
linear_cmap = LinearSegmentedColormap.from_list('my_cmap', ['red', 'green', 'blue'])
linear_cmap_reversed = LinearSegmentedColormap.from_list('my_cmap_r', linear_cmap.colors[::-1])
Визуализация сравнения оригинальной и инвертированной цветовых схем
Для сравнения оригинальной и инвертированной цветовых схем можно использовать ColorbarBase
из модуля matplotlib.colorbar
:
from matplotlib.colorbar import ColorbarBase
from matplotlib.colors import Normalize
norm = Normalize(vmin=0, vmax=1)
fig, ax = plt.subplots(2)
cb1 = ColorbarBase(ax[0], cmap=listed_cmap, norm=norm, orientation='horizontal')
cb2 = ColorbarBase(ax[1], cmap=listed_cmap_reversed, norm=norm, orientation='horizontal')
plt.tight_layout()
plt.show()
Визуализация
Инверсия цветовой схемы дает возможность по-новому взглянуть на меняющиеся цвета:
Стандартная цветовая схема: 🟥🟧🟨🟩🟦🟪
Измените привычную перспективу:
new_cmap = plt.cm.get_cmap('original_cmap').reversed()
Итак, у вас новый градиент:
Инвертированная цветовая схема: 🟪🟦🟩🟨🟧🟥
Цвета заменились друг на друга, предоставляя свежий взгляд на данные.
Гарантия качества визуализации при использовании инвертированных цветовых схем
Инвертирование цветовой схемы влияет не только на визуальную привлекательность графика, но и на его интерпретацию. Убедитесь, что инверсия улучшает понимание представленных данных. В некоторых ситуациях может потребоваться ручное создание инвертированной схемы:
from matplotlib.colors import ListedColormap
custom_colors = ['#000000', '#123456', '#654321', '#ffffff']
custom_cmap = ListedColormap(custom_colors)
reverse_colors = custom_cmap.colors[::-1]
custom_cmap_r = ListedColormap(reverse_colors)
Применив к графикам инвертированную схему custom_cmap_r
, вы получите уникальное визуальное представление данных.
Полезные материалы
- Как инвертировать цветовую схему в matplotlib – Stack Overflow — обсуждение методов инвертирования цветовых схем в Matplotlib.
- Визуализация данных с помощью Matplotlib в Python (руководство) – Real Python — подробное руководство по настройке и инвертированию цветовых схем.
- Справка по цветовым схемам — Документация Matplotlib 3.8.2 — примеры и детали работы с цветовыми схемами Matplotlib.
- Создание собственной цветовой схемы в Matplotlib (Medium) — пошаговое руководство по созданию пользовательских цветовых схем.
- Инвертирование цветовой схемы в Python с использованием Matplotlib (Medium) — примеры инвертирования цветовых схем на практике.