Преобразование contour

Примечание: начиная с Vega ≥ 5.8, это преобразование устарело и может быть удалено в одном из будущих основных выпусков. Для похожих задач с большей гибкостью используйте isocontour и kde2d.

Преобразование contour описывает пространственное распределение значений набором дискретных уровней. Каждая контурная линия — изолиния постоянного значения. Часто так показывают оценку плотности двумерных точечных данных: контуры удобнее для очень больших наборов точек.

На выходе создаётся новый поток геометрий GeoJSON. Их можно изобразить с помощью geoshape или geopath. Преобразование объединяет возможности методов contours и densityContour библиотеки d3-contour.

Параметры преобразования

Свойство Тип Описание
size Number[ ] Обязательно. Размеры области [width, height] для расчёта контуров. При заданном values это размеры входных данных; при оценке плотности — размеры выходного представления в пикселях.
values Number[ ] Массив чисел, представляющий сетку значений шириной width и высотой height. Если не задан, контуры строятся по ядерной оценке плотности входных данных.
x Field Поле с координатой X в пикселях для оценки плотности.
y Field Поле с координатой Y в пикселях для оценки плотности.
weight Field Поле с весом точки при оценке плотности. Если не задано, вес каждой точки равен 1. ≥ 4.0
cellSize Number Размер ячейки для расчёта плотности контуров.
bandwidth Number Ширина ядра при оценке плотности.
smooth Boolean Сглаживать ли контурные полигоны линейной интерполяцией (по умолчанию true). При ядерной оценке плотности параметр игнорируется.
thresholds Number[ ] Массив явных пороговых значений контуров. Если задан, параметры count и nice игнорируются.
count Number Желаемое число контуров. Игнорируется при заданном thresholds.
nice Boolean Округлять ли пороговые значения до удобных для чтения чисел (по умолчанию false). При этом число порогов может отличаться от точного значения count.

Использование

Пример строит 10 уровней контуров двумерной ядерной оценки плотности. Координаты точек в пикселях берутся из полей x_value и y_value, а сигналы width и height задают область расчёта.

{
  "type": "contour",
  "x": "x_value",
  "y": "y_value",
  "size": [{"signal": "width"}, {"signal": "height"}],
  "count": 10
}