Цветовые схемы в Kepler.gl являются одним из ключевых механизмов преобразования сырых геоданных в интерпретируемую визуальную информацию. Цвет в данном контексте выступает не декоративным элементом, а способом кодирования измерений: категорий, интенсивности, плотности, временных интервалов или агрегированных значений.
В основе системы лежит принцип data-driven styling, при котором визуальные свойства слоя напрямую зависят от данных и параметров визуализации.
Цветовая логика встроена в состояние визуализации
(visState) и определяется на уровне слоёв
(layers). Каждый слой содержит собственную конфигурацию
цветового отображения:
colorField — поле данных, влияющее на цветcolorScale — тип шкалы (категориальная, количественная,
логарифмическая)colorRange — набор цветов или палитраvisConfig — визуальные параметры слояПример фрагмента конфигурации:
const config = {
visState: {
layers: [
{
id: 'points-layer',
type: 'point',
config: {
dataId: 'dataset_1',
colorField: {
name: 'category',
type: 'string'
},
colorScale: 'ordinal',
visConfig: {
colorRange: {
name: 'Global Warming',
type: 'qualitative',
category: 'Uber',
colors: ['#5A1846', '#900C3F', '#C70039', '#FF5733', '#FFC300']
},
opacity: 0.8,
strokeColor: [255, 255, 255]
}
}
}
]
}
};
Kepler.gl использует несколько типов шкал, каждая из которых соответствует характеру данных.
Используется для дискретных значений, таких как тип объекта, название региона, класс события.
Характерные особенности:
Применяется к непрерывным числовым данным.
Пример:
colorScale: 'quantile'
Дополнительно встречаются вариации:
quantizelogsqrtИспользуются для разбиения числового диапазона на интервалы.
quantile — равное количество объектов в каждом
интервалеquantize — равные интервалы значенийЦветовые палитры в Kepler.gl задаются через объект
colorRange, который может быть предопределённым или
пользовательским.
Структура:
name — название палитрыtype — тип (qualitative, sequential, diverging)colors — массив HEX-значенийПример:
colorRange: {
name: 'Custom Heat',
type: 'sequential',
colors: ['#000004', '#3b0f70', '#8c2981', '#de4968', '#fe9f6d', '#fcfdbf']
}
Kepler.gl содержит набор встроенных палитр, оптимизированных для различных задач визуализации:
Особенность встроенных схем заключается в согласованности между слоями: одинаковые типы данных визуально интерпретируются схожим образом.
Каждый тип слоя имеет собственную специфику применения цветовых схем.
Цвет задаётся на основе точечных объектов.
fillColor и
strokeColorЦвет используется для отображения связей между точками.
Полигональные данные используют цвет для заполнения областей.
fillColorАгрегационный слой, где цвет отражает плотность объектов.
colorAggregationПример:
{
type: 'hexagon',
config: {
colorAggregation: 'average',
colorField: {
name: 'value',
type: 'integer'
}
}
}
Цветовая схема здесь напрямую отражает плотность точек.
Основной механизм работы цветовых схем основан на связывании поля данных с визуальным параметром:
Пример:
colorField: {
name: 'population',
type: 'integer'
}
Гибкость Kepler.gl позволяет задавать собственные цветовые диапазоны для точной настройки визуального представления данных.
Возможные подходы:
Пример динамической генерации:
import { scaleSequential } from 'd3-scale';
import { interpolateViridis } from 'd3-scale-chromatic';
const scale = scaleSequential(interpolateViridis).domain([0, 100]);
Цветовая схема в Kepler.gl тесно связана с параметром прозрачности:
opacity — общая прозрачность слояstrokeOpacity — прозрачность обводкиfillOpacity — прозрачность заливкиКомбинация цвета и прозрачности влияет на читаемость плотных слоёв и перекрывающихся объектов.
При использовании агрегирующих слоёв цвет перестаёт быть характеристикой отдельного объекта и становится функцией группы:
Это изменяет смысл цветовой шкалы: она отражает не объект, а статистическое свойство области.
При работе с большими наборами данных цветовые вычисления выполняются на уровне WebGL через deck.gl, что позволяет:
Цветовые функции в таких условиях стремятся к минимальной вычислительной сложности, избегая сложных JS-операций на каждый кадр.
Цветовые диапазоны могут быть унифицированы между слоями для обеспечения визуальной согласованности:
Такая унификация снижает когнитивную нагрузку при анализе многослойных картографических представлений.