Heatmap Chart (Heatmap)
This chapter explains the rules for Heatmaps in EasyChart: how coordinates/cells are mapped, how SeriesData fields are interpreted, and how the value-to-color range is calculated. It also notes that Heatmap is a Pro feature.
1. Use cases
- 2D matrix visualization (rows/columns)
- Density/intensity visualization
2. Important note (Pro feature)
- The renderer for
SerieType.Heatmapis registered byEasyChartProBootstrap. - If EasyChartPro is not installed/enabled, this serie may be treated as a “dynamic renderer” and attempted to be created, but it usually won’t render.
3. Minimum viable setup (checklist)
ChartProfile.coordinateSystem = Cartesian2D- Axes (Axis Settings)
- Most common: X=Category (columns), Y=Category (rows)
- X/Y can also use Value axes (see section 7)
- Series
- Add 1
Serie Serie.type = HeatmapSerie.seriesDatahas at least 1 point
- Add 1
4. Inspector fields
- Series
series[i].type = Heatmapseries[i].settings: actual type isHeatmapSettingsrenderMode: Grid / Gradient / ContourcellGapPxxSplitCount/ySplitCount(used when X/Y are Value axes)autoRange / minValue / maxValuelowColor / midColor / highColorclampinfluenceMode: None / Bleed / Smooth- sub settings:
bleed / smooth / gradient / contour
5. SeriesData field interpretation (runtime behavior)
Each Heatmap data point corresponds to one “cell/pixel area”. Runtime uses:
- X coordinate (column):
SeriesData.x - Y coordinate (row):
SeriesData.y - Intensity:
SeriesData.value - Color override: if
SeriesData.useColor = true, runtime usesSeriesData.colordirectly and skips interpolation fromlow/mid/high.
Note: Heatmap
x/ydo not accept string categories. With Category axes, you still use indices.
6. Standard template: 2D Category (X/Y) + value intensity (most common)
6.1 X axis (Category: columns)
AxisType = Categorylabels = ["Col0","Col1",...]
6.2 Y axis (Category: rows)
AxisType = Categorylabels = ["Row0","Row1",...]
6.3 Data pattern
x = column index(runtime appliesRoundToInt)y = row index(runtime appliesRoundToInt)value = intensity
6.4 Important detail: cell count vs labelPlacement for Category axes
Runtime uses the axis labelPlacement to decide whether to split into labels.Count cells or labels.Count-1 cells:
-
CategoryLabelPlacement.CellCenter- X cell count =
labels.Count - Y cell count =
labels.Count
- X cell count =
-
Others (non CellCenter)
- X cell count =
max(1, labels.Count - 1) - Y cell count =
max(1, labels.Count - 1)
- X cell count =
This directly affects the valid range of indices you should write into x/y.
7. Heatmap with Value axes (X/Y are numeric axes)
When X or Y uses AxisType.Value:
-
Cell count no longer comes from labels. It comes from:
- X:
HeatmapSettings.xSplitCount - Y:
HeatmapSettings.ySplitCount
- X:
-
SeriesData.x/yare normalized using_xMin/_xMaxand_yMin/_yMax, then mapped into cell indices.
This is suitable for intensity/density distribution over a continuous value range.
8. Common pitfalls and troubleshooting
-
All cells look the same / low contrast
- Check whether
HeatmapSettings.autoRangeis enabled - Or manually set
minValue/maxValue - Also check whether all points have almost the same
value
- Check whether
-
Colors do not follow low/mid/high
- Check whether some points set
useColor=true(it overrides palette interpolation)
- Check whether some points set
-
Cells are misaligned (out-of-range / off-by-one)
- Check whether Category axis
labelPlacementisCellCenter - Use section 6.4 to determine correct cell count and index ranges
- Check whether Category axis
-
Cell gaps are too large/too tight
- Adjust
HeatmapSettings.cellGapPx
- Adjust
9. Further reading
- Axes/range, Series and data:
00_02-WorkflowAndLibrary.md - Common recipes:
04_08-CommonRecipes.md - FAQ:
04_09-FAQ.md