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

Преобразование heatmap ≥ 5.8 превращает входные растровые сетки (матрицы) в изображения тепловых карт. Оно подходит для показа двумерных растровых данных, оценок плотности и математических функций в виде цветовой сетки.

На вход подаётся растровая сетка чисел, а на выходе получается растровое изображение Canvas, которое можно вывести примитивом image. Размеры Canvas совпадают с размерами входной сетки; видимые размеры изображения задаются свойствами ширины и высоты примитива. Полный пример показан в контурной диаграмме.

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

Свойство Тип Описание
field Field Поле с растровой сеткой. Если не задано, сам объект данных считается сеткой.
color Color | Expr Постоянный цвет или выражение для цвета каждого пикселя. Выражение получает объект datum с полями $x, $y, $value и $max. По умолчанию серый цвет "#888".
opacity Number | Expr Постоянная непрозрачность или выражение для каждого пикселя. Выражение получает объект datum с полями $x, $y, $value и $max. По умолчанию используется $value / $max.
resolve String Способ определения максимума datum.$max для нескольких сеток. При "independent" (по умолчанию) максимум рассчитывается отдельно для каждой; при "shared" используется один общий максимум.
as String Имя выходного поля для созданного изображения Canvas (по умолчанию "image").

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

Тепловая карта двумерной плотности

Пример строит тепловую карту двумерной ядерной оценки плотности. Предшествующее преобразование kde2d берёт координаты точек в пикселях из полей x_value и y_value, а сигналы width и height задают область расчёта. Для карты используется постоянный синий color; прозрачность opacity определяется нормированным значением сетки. Выражение ниже совпадает с поведением по умолчанию при отсутствии параметра opacity.

{
  "type": "kde2d",
  "x": "x_value",
  "y": "y_value",
  "size": [{"signal": "width"}, {"signal": "height"}],
  "as": "grid"
},
{
  "type": "heatmap",
  "field": "grid",
  "color": "steelblue",
  "opacity": {"expr": "datum.$value / datum.$max"}
}

Тепловая карта математической функции

Пример строит тепловую карту двумерной синусоидальной функции. Входной объект задаёт ширину и высоту изображения без готовых значений сетки. Пользовательское выражение берёт координаты пикселя $x и $y и цветовую шкалу, чтобы заполнить изображение.

{
  "signals": [
    {"name": "scale", "value": 0.05}
  ],
  "scales": [
    {
      "name": "color",
      "type": "linear",
      "domain": [-1, 1],
      "range": {"scheme": "spectral"}
    }
  ],
  "data": [
    {
      "name": "heatmap",
      "values": [{"width": 150, "height": 100}],
      "transform": [
        {
          "type": "heatmap",
          "color": {
            "expr": "scale('color', sin(scale * (datum.$x + datum.$y)) * sin(scale * (datum.$x - datum.$y)))"
          },
          "opacity": 1
        }
      ]
    }
  ]
}