Heatmap Transform
The heatmap transform ≥ 5.8 renders input raster grids (matrices) into output heatmap images. This transform can be used to visualize 2D input raster data, density estimates, or mathematical functions as color grids.
The heatmap transform take as an input a raster grid (matrix) of numerical values. The output value is a Canvas bitmap that can be drawn using an image mark. The Canvas bitmap dimensions will match those of the input raster grid. The actual rendered image dimensions are determined by the image mark width and height properties. For a complete example, see the contour plot example visualization.
Transform Parameters
Property | Type | Description |
---|---|---|
field | Field | The field with raster grid data. If unspecified, the data object itself is interpreted as a raster grid. |
color | Color | Expr | A color value or expression for setting each individual pixel’s color. If an expression is provided, it will be invoked with an input datum that includes $x , $y , $value , and $max fields for the grid. If unspecified, the color defaults to gray ("#888" ). |
opacity | Number | Expr | A constant opacity value or expression for setting each individual pixel’s opacity. If an expression is provided, it will be invoked with an input datum that includes $x , $y , $value , and $max fields for the grid. If unspecified,the opacity defaults to $value / $max . |
resolve | String | The method for resolving maximum values (datum.$max ) across multiple input grids. If 'independent' (the default), maximum calculation will be performed separately for each grid. If 'shared' , a single global maximum will be used for all input grids. |
as | String | The output field at which to write the generated bitmap canvas images. The default is "image" . |
Usage
Heatmap of 2D Densities
This example generates a heatmap for the 2D kernel density estimate of a source data stream. The backing kde2d transform draws pre-computed pixel (x, y) coordinates from the x_value
and y_value
data fields, and uses the width
and height
signals to configure the area over which densities, and thus the subsequent heatmap, should be computed. The heatmap uses a solid blue color and normalized grid values for the opacity. The opacity expression used here matches the default used by the transform if no opacity is specified.
{
"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"}
}
Heatmap of a Mathematical Function
This example generates a heatmap visualization of a 2D sinusoidal function. The input data object specifies the width and height of the heatmap image, but does not provide raster grid values. A custom expression uses the $x
and $y
pixel properties, along with the defined color scale, to dynamically populate the output heatmap image.
{
"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
}
]
}
]
}