Содержание статьи

matplotlib позволяет управлять цветами графиков через строковые обозначения, HEX-коды, RGB-массивы и заранее определённые палитры. Правильный выбор формата задаёт точный оттенок без дополнительных преобразований. Например, строка «red» удобна для быстрых набросков, а запись «#1f77b4» подходит для строгой визуальной системы.
В большинстве функций цвет задаётся параметром color, однако разные типы графиков используют его по-своему. В линейных диаграммах цвет применяется к линии целиком, а в scatter() можно назначать оттенок для каждого элемента массива. Это позволяет строить карты значений или выделять группы данных.
При работе с несколькими сериями важно учитывать порядок цветового цикла. matplotlib использует преднастроенный набор оттенков, но его можно заменить собственным списком через rcParams[«axes.prop_cycle»]. Такой подход помогает поддерживать единый стиль в больших проектах или при генерации отчётов.
Назначение цвета через аргумент color в plot()
Аргумент color в plot() задаёт оттенок линии напрямую без дополнительных настроек. Параметр принимает строковые обозначения, HEX-коды и числовые форматы. Такой способ подходит для случаев, когда требуется точный контроль над внешним видом кривой.
Поддерживаемые варианты записи:
- символьные коды: «r», «g», «b», «k»;
- полные названия: «red», «orange», «skyblue»;
- HEX-формат: «#ff5733», «#1f77b4»;
- RGB-кортежи: (0.2, 0.5, 0.8);
- RGBA-кортежи для прозрачности: (0.2, 0.5, 0.8, 0.4).
В одном вызове plot() оттенок применяется ко всей линии. Для нескольких линий цвет указывается отдельно для каждой записи:
plt.plot(x, y1, color="#d62728")
plt.plot(x, y2, color=(0.1, 0.3, 0.6))
Практические рекомендации:
- HEX-коды удобны при работе с корпоративной палитрой.
- RGB-кортежи подходят для программной генерации оттенков.
- Если важно подчеркнуть различия между сериями, выбирайте контрастные значения из одной цветовой модели.
- Для тёмного фона лучше использовать светлые HEX-значения или RGB-кортежи с высокими компонентами.
Использование цветовых кодов RGB и HEX
matplotlib принимает RGB- и HEX-записи без преобразований, что позволяет задавать оттенок с точностью до единичного значения компоненты. RGB передаётся в формате трёх или четырёх чисел от 0 до 1, а HEX использует шестнадцатеричную форму #RRGGBB или #RRGGBBAA.
Примеры допустимых вариантов:
- RGB: (0.1, 0.45, 0.85);
- RGBA: (0.1, 0.45, 0.85, 0.6);
- HEX без альфа: #3498db;
- HEX с альфа: #3498db99.
Применение в коде:
plt.plot(x, y, color=(0.3, 0.7, 0.2))
plt.plot(x, y2, color="#e74c3c")
Практические рекомендации для RGB и HEX:
- RGB удобно использовать при генерации оттенков из числовых данных.
- HEX подходит для устойчивой цветовой схемы, где требуется фиксированное значение.
- При работе с альфа-каналом лучше использовать RGBA, поскольку прозрачность в HEX менее наглядна.
- Значения RGB вне диапазона 0–1 вызывают ошибку, поэтому перед передачей их стоит нормализовать.
Выбор оттенков из встроенной таблицы цветов matplotlib
matplotlib включает набор именованных оттенков, доступных через словарь matplotlib.colors.CSS4_COLORS и укороченный список базовых названий. Эти значения подходят для случаев, когда требуется стабильная палитра без ручного подбора HEX или RGB.
Основные источники встроенных цветов:
- BASE_COLORS – короткие символьные коды: ‘r’, ‘g’, ‘b’, ‘k’;
- TABLEAU_COLORS – расширенная палитра с нейтральными и спокойными оттенками;
- CSS4_COLORS – более 140 вариантов с точными HEX-кодами, например «cornflowerblue», «firebrick».
Использование встроенного названия в plot():
plt.plot(x, y, color="cornflowerblue")
plt.plot(x, y2, color="darkorange")
Рекомендации при выборе встроенных цветов:
- Для контрастных серий используйте сочетания из TABLEAU_COLORS, так как они хорошо различимы.
- При работе с большим количеством линий удобнее формировать список значений из CSS4_COLORS и выбирать оттенки программно.
- Названия в CSS4 чувствительны к регистру, поэтому стоит использовать точные строки из словаря.
Изменение цвета точек и линий в scatter()
scatter() позволяет задавать оттенок для каждой точки отдельно через параметр c. Значение может быть строкой, массивом чисел или набором HEX-кодов. Такой подход подходит для визуализации групп, плотности распределения или изменения параметра по оси данных.
Примеры использования:
plt.scatter(x, y, c="#2ecc71")
plt.scatter(x, y, c=[0.1, 0.6, 0.9])
plt.scatter(x, y, c=[0.2, 0.4, 0.8, 0.9])
Если требуется дифференцировать точки по массиву значений, функции автоматически применяют карту цветов. Параметр cmap выбирает подходящую палитру:
plt.scatter(x, y, c=values, cmap="viridis")
Цвет границы задаётся отдельно через edgecolors. Это помогает выделять маркеры на фоне плотной выборки:
plt.scatter(x, y, c="#3498db", edgecolors="black")
Рекомендации:
- При использовании массива значений в c следите, чтобы его длина совпадала с количеством точек.
- Для тёмного фона выбирайте яркие оттенки и тёмную границу, чтобы сохранить читаемость.
- Если точки частично перекрываются, применяйте параметр alpha для регулирования прозрачности.
Настройка цвета столбцов в bar() для отдельных значений
Функция bar() принимает параметр color, который может быть списком. Это позволяет назначать отдельный оттенок каждому столбцу без дополнительной обработки данных. Формат списка поддерживает названия встроенных цветов, HEX-коды и RGB-кортежи.
Пример с разными оттенками для каждого значения:
colors = ["#e74c3c", "#3498db", "#2ecc71", "#f1c40f"]
plt.bar(labels, values, color=colors)
Если требуется выделить определённые элементы, можно передать условный список:
highlight = ["#d35400" if v > 50 else "#95a5a6" for v in values]
plt.bar(labels, values, color=highlight)
Для визуального акцента допускается управление цветом границ через edgecolor и прозрачностью через alpha:
plt.bar(labels, values, color="#5dade2", edgecolor="black", alpha=0.8)
Практические рекомендации:
- HEX-коды подходящи для чёткой фиксации оттенков внутри одной цветовой схемы.
- При большом числе столбцов следует формировать список цветов программно, чтобы избежать повторений.
- Для тёмной темы интерфейса выбирайте светлые оттенки и тёмную границу – это повышает читаемость подписей и контуров.
Применение цветовых циклов через rcParams
matplotlib позволяет управлять последовательностью цветов для серий данных через параметр axes.prop_cycle в rcParams. Это упрощает создание графиков с множеством линий без явного указания цвета для каждой.
Пример настройки пользовательского цикла:
import matplotlib.pyplot as plt
from cycler import cycler
plt.rcParams["axes.prop_cycle"] = cycler(color=["#e74c3c", "#3498db", "#2ecc71"])
После такой настройки каждая последующая линия автоматически получает следующий цвет из цикла:
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)
Рекомендации по применению циклов:
- Используйте HEX-коды или RGB-кортежи для точного соответствия корпоративной палитре.
- Для коротких серий линий подойдут контрастные базовые цвета, а для длинных – плавно изменяющиеся оттенки.
- При повторном построении графиков цветовые циклы обеспечивают единый стиль без ручной корректировки каждого цвета.
Пример визуального представления пользовательского цикла:
| Цвет в цикле | HEX-код |
|---|---|
| Красный | #e74c3c |
| Синий | #3498db |
| Зелёный | #2ecc71 |
Назначение цвета для нескольких серий данных на одном графике
При построении нескольких серий данных на одном графике важно назначать цвета так, чтобы линии или точки легко различались. matplotlib позволяет задавать цвет каждой серии через параметр color или использовать циклы цветов через rcParams.
Пример явного указания цвета для нескольких линий:
plt.plot(x, y1, color="#e74c3c")
plt.plot(x, y2, color="#3498db")
plt.plot(x, y3, color="#2ecc71")
При использовании scatter() для нескольких групп данных можно назначать массивы цветов:
plt.scatter(x, y1, c="red")
plt.scatter(x, y2, c="blue")
plt.scatter(x, y3, c="green")
Рекомендации для визуального различения серий:
- Используйте контрастные оттенки для линий и точек, чтобы избежать слияния цветов на плотных графиках.
- Если данные большого объёма, применяйте непрерывные цветовые карты через cmap, привязанные к значениям серии.
- Для единообразия стиля на разных графиках можно определить глобальный список цветов и использовать его для всех серий.
- При комбинировании линий и точек следите за тем, чтобы цвета повторялись логично и читабельно для зрителя.
Вопрос-ответ:
Как задать конкретный цвет линии в функции plot()?
Для задания цвета линии в plot() используется параметр color. Можно передавать строковое название цвета, HEX-код или RGB-кортеж. Например: plt.plot(x, y, color=»red»), plt.plot(x, y, color=»#3498db») или plt.plot(x, y, color=(0.2, 0.5, 0.8)).
Можно ли назначить разные цвета точек на одном scatter графике?
Да, scatter() поддерживает массивы цветов через параметр c. Каждая точка получает цвет из массива. Пример: plt.scatter(x, y, c=[«red», «green», «blue»]). Также можно использовать числовой массив с colormap для градации оттенков.
Как использовать встроенные цвета matplotlib для нескольких линий?
Matplotlib содержит предустановленные палитры, такие как BASE_COLORS, TABLEAU_COLORS и CSS4_COLORS. Для нескольких линий можно задать цвет каждой через color или использовать пользовательский цветовой цикл через rcParams[«axes.prop_cycle»]. Это упрощает оформление графиков с большим количеством серий.
Какая разница между RGB и HEX при назначении цвета?
RGB представляет собой кортеж чисел от 0 до 1 для красного, зелёного и синего каналов. HEX — шестнадцатеричная запись, например #ff5733. RGB удобен для программного создания оттенков, HEX подходит для точного повторения цвета из палитры. Оба формата принимаются большинством функций matplotlib.
Как задать индивидуальный цвет для каждого столбца в bar()?
Параметр color функции bar() может принимать список цветов, где каждый элемент соответствует конкретному столбцу. Пример: plt.bar(labels, values, color=[«#e74c3c», «#3498db», «#2ecc71»]). Для динамического выделения можно формировать список цветов на основе условий для значений столбцов.
Как назначить разные цвета для нескольких линий на одном графике в matplotlib?
Для каждой линии в plot() можно задавать параметр color индивидуально. Например, plt.plot(x, y1, color=»#e74c3c»), plt.plot(x, y2, color=»#3498db»). Альтернативно, можно задать цветовой цикл через rcParams[«axes.prop_cycle»], чтобы линии автоматически получали цвета из списка. Такой подход удобен при построении графиков с большим количеством серий и помогает поддерживать читаемость.
