Heatmap chart
chart.heatmap
Overview
Send explicit row and column identities plus a complete matrix of decimal strings or nulls. Squillify preserves order, keeps missing distinct from zero, returns the exact resolved scale and every cell result, and refuses before labels or cells become unreadable. It never clusters, bins, aggregates, imputes, or calculates correlation for you. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance.
Dense grids need exact value semantics and a refusal boundary before cells or labels become unreadable.
Reliability
We preserve every exact decimal you supply, keep null distinct from zero, and produce byte-identical safe SVG for identical resolved input. Declared failures: HEATMAP_DIMENSION_INVALID — trigger: row or column identities, labels, order, or bounds are invalid; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. HEATMAP_MATRIX_INVALID — trigger: the matrix is ragged, incomplete, all null, or contains a JSON number; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. HEATMAP_SCALE_INVALID — trigger: the exact scale domain, midpoint, mapping, or steps are invalid; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. HEATMAP_GROUP_INVALID — trigger: a supplied row or column group is missing, overlapping, or noncontiguous; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. HEATMAP_ANNOTATION_INVALID — trigger: a selected annotation references an absent cell or repeats a cell; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. CHART_CAPACITY_EXCEEDED — trigger: the matrix, labels, targets, or annotations cannot fit the requested canvas; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. CHART_OUTPUT_TOO_LARGE — trigger: the inline SVG byte budget would be exceeded at the requested size and data density; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. CHART_THEME_UNKNOWN — trigger: theme or surface names a visual language we do not register for this chart family; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. CHART_UNSAFE_OUTPUT — trigger: the finished SVG failed our final safety re-validation (this is on us, not your data); retryable: no; unchanged input: will not succeed; next: contact support with the request id — retrying the same input will not help. CHART_OUTPUT_TOO_COMPLEX — trigger: the render hit a structural complexity ceiling (elements, depth, text volume, or path commands) separate from the byte budget; retryable: no; unchanged input: will not succeed; next: contact support with the request id — retrying the same input will not help.
Context footprint
Invalid dimensions, matrices, scales, groups, and annotations return the matching HEATMAP_* code. Capacity and output limits refuse before expensive layout and suggest reducing the matrix or enlarging the canvas. A successful call costs 4 execution credits.
When to use it
When you already have a complete bounded quantitative matrix.
When you need Squillify to calculate, cluster, aggregate, or impute it.
Scope
Non-goals
- Calculating correlation or confusion values
- Clustering or reordering
- Imputing missing cells
- Sampling, aggregation, or raster fallback
Properties
Capabilities
Cost & billing
Flat rate per invocation
File handling
How we handle your data
What this means
This skill may receive sensitive content and may return submitted, transformed, extracted, or reformatted content.
Squillify guarantees
- Runs inside Squillify
- This skill runs inside Squillify.
- Payloads are not sent to an external service by this skill.
- Squillify does not permanently store submitted payloads.
- Telemetry records metadata only, not submitted content.
- Submitted payloads are not used for training.
- Submitted payloads are not reviewed by humans.
- This skill does not target sensitive data.
- The response may contain submitted or transformed content.
Your responsibility
Squillify does not determine whether submitted content is sensitive. Your application is responsible for deciding what data it is allowed to submit. Your application is responsible for securing the response.
Input schema
| Field | Type | Required | Description |
|---|---|---|---|
| rows | array | Yes | 1..1000 closed dimension items in caller order. Each item requires a unique id and label and may include shortLabel and annotation. |
| columns | array | Yes | 1..1000 closed dimension items in caller order. Each item requires a unique id and label and may include shortLabel and annotation. |
| values | array | Yes | A complete rows×columns matrix. Every cell is an exact decimal string or null; JSON numbers, ragged rows, and an all-null matrix are rejected. |
| scale | object | No | Closed scale object: type sequential (default) or diverging; domain auto or exact min/max; diverging requires midpoint; mapping continuous (default) or equalInterval; equalInterval accepts steps 3..11. |
| annotations | object | No | Closed annotation request: mode none (default), values, or selected. Selected requires unique existing rowId/columnId cell references. |
| rowGroups | array | No | Optional bounded contiguous caller-supplied row ranges. They add headers and separators only and never reorder data; omit for no row groups. |
| columnGroups | array | No | Optional bounded contiguous caller-supplied column ranges. They add headers and separators only and never reorder data; omit for no column groups. |
| legend | object | No | Closed legend settings. visible defaults true and reports exact domain, midpoint, equal-interval boundaries, and missing state. |
| width | integer | No | Canvas width in pixels, 100..1600 (optional; default 800). Outside that range the request is refused as invalid input rather than clamped. The ceiling is the size a chart is read at — a full-HD dashboard or a report page; beyond it the canvas stops being what limits how much fits, and type sized for the canvas is illegible once the export is displayed smaller. It applies per side, so a tall portrait canvas for a long horizontal ranking is allowed. |
| height | integer | No | Canvas height in pixels, 100..1600 (optional; default 500). Outside that range the request is refused as invalid input rather than clamped. The ceiling is the size a chart is read at — a full-HD dashboard or a report page; beyond it the canvas stops being what limits how much fits, and type sized for the canvas is illegible once the export is displayed smaller. It applies per side, so a tall portrait canvas for a long horizontal ranking is allowed. |
| theme | string | No | Visual language: basic, modern or squillify (optional; default squillify). An unregistered value is rejected with the registered names listed — we never substitute silently. |
| surface | string | No | Surface the theme renders on: dark or light (optional; default light). |
| density | string | No | How tightly the chrome is packed: compact, standard or spacious (optional; default standard). Density scales spacing only — it never lowers a legibility minimum. |
| visualProfile | string | No | What the SVG promises about the host font: portable or certified (optional; default portable). The default is layout-deterministic and tolerates substitution; certified refuses text the certified metrics cannot fully measure. |
| title | string | No | Heading drawn above the plot (optional; at most 1024 code points). Omit it and the chart renders untitled — we never invent a title from your data. One code point past that ceiling is refused as TOOL_INPUT_INVALID. |
| subtitle | string | No | Second line under the title, useful for the period covered or the unit (optional; at most 1024 code points). Omit it and no second line is drawn. |
| style | object | No | Optional bounded paint and typography styling; omit it to use the selected theme defaults. text.size is expressed in normalized design pixels at an 800-pixel reference width, so equivalent roles match at equal CSS width. It never changes data or accessibility. 'contract' selects the published semantics. 'tokens' sets design tokens; 'rules' applies typed properties to a role and optional series/category facets; 'palette' accepts a digest-checked palette; 'css' is a bounded post-layout stylesheet. The styleCapabilities section publishes this family's accepted roles, properties and copyable examples. For Bar, target one mark with role 'bar' plus seriesIndex and categoryIndex; categoryIndex alone targets that category across series. A minimal rule is {"target":{"role":"bar"},"set":{"paint.fill":"#2563eb"}}. Unsupported typed rules are refused; unsupported CSS is dropped and reported. Do not discover the grammar through trial calls: style validation failures are currently billable. Before calling, read this contract's styleSurface and styleCapabilities sections for the complete rule shape, accepted roles and properties, limits, and copyable examples. |
| behavior | object | No | Optional host behavior. Presets are enter_cells, update_cells, focus_cell, focus_row, focus_column, and trace_grid; omit for static SVG. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance. |
| accessibility | object | No | Optional object with detail and maxItems properties; omit it for the default bounded matrix reading order. |
| output | object | No | Output scoping (optional). Nested key output.idNamespace ([a-z][a-z0-9-]{0,31}) is prefixed onto every generated element id when several charts share one host document; omit for a standalone chart. An invalid namespace is rejected. |
Output schema
| Field | Type | Required | Description |
|---|---|---|---|
| svg | string | Yes | Allowlist-checked SVG document. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance. |
| width | integer | Yes | Rendered width in pixels. |
| height | integer | Yes | Rendered height in pixels. |
| viewBox | string | Yes | Rendered SVG viewBox. |
| rowResults | array | Yes | Rows in caller order with id, label, index, exact extrema, and counts. |
| columnResults | array | Yes | Columns in caller order with id, label, index, exact extrema, and counts. |
| cellResults | array | Yes | Row-major exact cell results with missing state, normalized position, bin, and stable target key. |
| scaleResult | object | Yes | Resolved exact domain, type, midpoint, mapping, and bin boundaries. |
| accessibility | object | No | Resolved accessible title, detail rung, and bounded data description. |
| renderSummary | object | Yes | Object with bounded row, column, cell, missing-value, annotation, and grouping counts or flags. |
| transformationSummary | object | Yes | Object proving order was preserved and no clustering, binning, aggregation, imputation, or correlation was performed. |
| styleReport | object | No | Always reports the resolved typographyProfile and fontMetrics contract, plus tokensApplied, rulesApplied, typedRulesApplied, typedAssignmentsApplied, rulesDropped, declarationsDropped and, when anything was dropped, a bounded list of reasons. |
| warnings | array | No | Present when the render succeeded with a known degradation. Each entry is an object with a stable code, a message and details. Every chart can emit FONT_SUBSTITUTION_POSSIBLE under visualProfile 'portable', FONT_GLYPH_UNMEASURED when a code point falls outside the certified metrics, and CHART_STYLE_PARTIALLY_APPLIED when part of your styling was dropped — styleReport then names which part and why. Codes are stable for agent routing. |
| behavior | object | No | Resolved default-on motion and interaction report. Includes the digest-bound host artifact when behavior is enabled and always preserves a complete script-free SVG. svg is a complete static, script-free chart. Mark highlight, the dotted guide, and the value panel are not in that SVG, and entry motion, focus, and updates stay inactive there. Pass the entire output.behavior.artifact unchanged to SquillifyChartRuntime.mount(container, artifact, options), then call the returned handle's replay() once to play the entry. A later value change uses update(nextArtifact, {intent}). Injecting svg directly leaves hover and motion off. Interaction is on by default for every host chart: after mount, pointer and keyboard focus open the value panel and the dotted guide. Set behavior.interaction.enabled to false to turn that off. motion.preset accepts only the family's entrance. |
API contract
POST /v1/executecurl -sS -X POST "$BASE/v1/execute" \
-H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
-d '{"skillKey":"chart.heatmap","input":{"rows":[{"id":"north","label":"North"}],"columns":[{"id":"q1","label":"Q1"}],"values":[["0.9"]],"title":"Regional intensity"}}'import { Squillify } from "@squillify/sdk";
const sq = new Squillify({ apiKey: process.env.SQUILLIFY_API_KEY });
const { output } = await sq.execute("chart.heatmap", {"values":[["0.90","0.40"],[null,"-0.20"]],"scale":{"type":"diverging","midpoint":"0","domain":{"max":"1","min":"-1"}},"columns":[{"label":"Q1","id":"q1"},{"label":"Q2","id":"q2"}],"title":"Regional deviation","rows":[{"label":"North","id":"north"},{"label":"South","id":"south"}]});Errors
| Code | HTTP | Retryable | Description |
|---|---|---|---|
| VALIDATION_ERROR | 400 | No | The request payload failed schema validation. |
| UNAUTHORIZED | 401 | No | Missing or invalid API key. |
| SKILL_NOT_ACCESSIBLE | 403 | No | The API key is not granted access to this skill. |
| SKILL_NOT_AVAILABLE_FOR_PLAN | 403 | No | This skill is not included in your current plan. |
| PLAN_ELIGIBILITY_UNAVAILABLE | 503 | Yes | Plan eligibility could not be decided. Retry after backoff. |
| SKILL_NOT_FOUND | 404 | No | The requested skill or version does not exist. |
| TENANT_RATE_LIMITED | 429 | Yes | Request rate limit exceeded. Retry after backoff. |
| QUOTA_EXCEEDED | 429 | Yes | Plan quota exhausted. Retryable once the quota period resets. |
| EXECUTION_TIMEOUT | 504 | Yes | Execution exceeded the allowed time budget. |
| HEATMAP_DIMENSION_INVALID | 400 | No | The request payload failed this skill's input validation. |
| HEATMAP_MATRIX_INVALID | 400 | No | The request payload failed this skill's input validation. |
| HEATMAP_SCALE_INVALID | 400 | No | The request payload failed this skill's input validation. |
| HEATMAP_GROUP_INVALID | 400 | No | The request payload failed this skill's input validation. |
| HEATMAP_ANNOTATION_INVALID | 400 | No | The request payload failed this skill's input validation. |
| CHART_CAPACITY_EXCEEDED | 429 | No | A size, quota, rate, or time limit was exceeded. |
| CHART_OUTPUT_TOO_LARGE | 429 | No | A size, quota, rate, or time limit was exceeded. |
| CHART_THEME_UNKNOWN | 400 | No | The request payload failed this skill's input validation. |
| CHART_UNSAFE_OUTPUT | 500 | No | The skill encountered an unexpected execution failure. |
| CHART_OUTPUT_TOO_COMPLEX | 500 | No | The skill encountered an unexpected execution failure. |
Other limits
| Limit | Value |
|---|---|
| Recommended inline bytes | 32 KiB |
Limitations
- Calculating correlation or confusion values
- Clustering or reordering
- Imputing missing cells
- Sampling, aggregation, or raster fallback
- Calendar geometry
- Categorical glyph matrices
- Matrices that need computed clustering
How to call
POST /v1/execute (requires authentication)
{
"skillKey": "chart.heatmap",
"input": {
"values": [
[
"0.90",
"0.40"
],
[
null,
"-0.20"
]
],
"scale": {
"type": "diverging",
"midpoint": "0",
"domain": {
"max": "1",
"min": "-1"
}
},
"columns": [
{
"label": "Q1",
"id": "q1"
},
{
"label": "Q2",
"id": "q2"
}
],
"title": "Regional deviation",
"rows": [
{
"label": "North",
"id": "north"
},
{
"label": "South",
"id": "south"
}
]
}
}Examples
Regional deviation
{
"values": [
[
"0.90",
"0.40"
],
[
null,
"-0.20"
]
],
"scale": {
"type": "diverging",
"midpoint": "0",
"domain": {
"max": "1",
"min": "-1"
}
},
"columns": [
{
"label": "Q1",
"id": "q1"
},
{
"label": "Q2",
"id": "q2"
}
],
"title": "Regional deviation",
"rows": [
{
"label": "North",
"id": "north"
},
{
"label": "South",
"id": "south"
}
]
}{
"rowResults": [
{
"id": "north",
"label": "North",
"inputIndex": 0,
"nonNullCount": 2,
"missingCount": 0,
"min": "0.4",
"max": "0.9"
},
{
"id": "south",
"label": "South",
"inputIndex": 1,
"nonNullCount": 1,
"missingCount": 1,
"min": "-0.2",
"max": "-0.2"
}
],
"accessibility": {
"title": "Regional deviation",
"detail": "full",
"description": "Dense (heatmap) chart. 2 rows × 2 columns, diverging scale from -1.00 to 1.00, 1 missing cells distinct from zero. Cells: North/Q1 0.9, North/Q2 0.4, South/Q1 no value, South/Q2 -0.2. All values are listed."
},
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"500\" viewBox=\"0 0 800 500\" role=\"img\" class=\"sq-chart sq-chart--heatmap sq-family--dense sq-theme--squillify sq-surface--light sq-density--standard\" data-sq-style-contract=\"CHART_STYLE@1\" data-sq-chart=\"heatmap\" data-sq-family=\"dense\" data-sq-theme=\"squillify\" data-sq-theme-version=\"1\" data-sq-surface=\"light\" data-sq-density=\"standard\" data-sq-a11y-detail=\"full\" aria-labelledby=\"sq-2057667ba8fb-title-0 sq-2057667ba8fb-desc-1\"><title id=\"sq-2057667ba8fb-title-0\">Regional deviation</title><desc id=\"sq-2057667ba8fb-desc-1\">Dense (heatmap) chart. 2 rows × 2 columns, diverging scale from -1.00 to 1.00, 1 missing cells distinct from zero. Cells: North/Q1 0.9, North/Q2 0.4, South/Q1 no value, South/Q2 -0.2. All values are listed.</desc><style>.sq-chart{--sq-chart-axis:#c9d1df;--sq-chart-font-family:'Squillify Mono', 'IBM Plex Mono', monospace;--sq-chart-grid:#d8dee9;--sq-chart-surface:#ffffff;--sq-chart-text-muted:#667085;--sq-chart-text-primary:#101828;--sq-series-1:#2563eb;--sq-series-2:#6d5ce7;--sq-series-3:#168a5b;--sq-series-4:#c45412;--sq-series-5:#d92d20;--sq-series-6:#667085;font-family:var(--sq-chart-font-family);font-weight:500;}.sq-chart .sq-background{fill:var(--sq-chart-surface);}.sq-chart .sq-title{fill:var(--sq-chart-text-primary);}.sq-chart .sq-tick-label{fill:var(--sq-chart-text-muted);}.sq-chart .sq-category-label{fill:var(--sq-chart-text-muted);}</style><rect x=\"0\" y=\"0\" width=\"800\" height=\"500\" fill=\"#ffffff\" class=\"sq-background\" data-sq-role=\"background\"/><g class=\"sq-plot\" data-sq-role=\"plot\"><g class=\"sq-mark\" data-sq-role=\"plot\"><rect x=\"49\" y=\"34\" width=\"346\" height=\"195\" fill=\"#be2f36\" class=\"sq-mark sq-cell\" data-sq-role=\"heatmap-cell\" data-sq-target-key=\"t-heatmap-cell-f57e6fe02ca855e6\" data-sq-row-index=\"0\" data-sq-column-index=\"0\"/><rect x=\"395\" y=\"34\" width=\"346\" height=\"195\" fill=\"#f1a080\" class=\"sq-mark sq-cell\" data-sq-role=\"heatmap-cell\" data-sq-target-key=\"t-heatmap-cell-3e438eb51545c5ba\" data-sq-row-index=\"0\" data-sq-column-index=\"1\"/><rect x=\"49\" y=\"229\" width=\"346\" height=\"195\" fill=\"#c5cad1\" class=\"sq-mark sq-cell\" data-sq-role=\"heatmap-missing\" data-sq-target-key=\"t-heatmap-cell-337fe3936a091105\" data-sq-row-index=\"1\" data-sq-column-index=\"0\"/><rect x=\"395\" y=\"229\" width=\"346\" height=\"195\" fill=\"#bdd8e7\" class=\"sq-mark sq-cell\" data-sq-role=\"heatmap-cell\" data-sq-target-key=\"t-heatmap-cell-327b736b4e3165f0\" data-sq-row-index=\"1\" data-sq-column-index=\"1\"/></g><text x=\"43\" y=\"135\" font-size=\"10\" text-anchor=\"end\" textLength=\"30\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-category-label\" data-sq-role=\"row-label\" data-sq-row-index=\"0\">North</text><text x=\"43\" y=\"330\" font-size=\"10\" text-anchor=\"end\" textLength=\"30\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-category-label\" data-sq-role=\"row-label\" data-sq-row-index=\"1\">South</text><g transform=\"translate(222 430) rotate(-45)\"><text x=\"0\" y=\"0\" font-size=\"10\" text-anchor=\"end\" textLength=\"12\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-category-label\" data-sq-role=\"column-label\" data-sq-column-index=\"0\">Q1</text></g><g transform=\"translate(568 430) rotate(-45)\"><text x=\"0\" y=\"0\" font-size=\"10\" text-anchor=\"end\" textLength=\"12\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-category-label\" data-sq-role=\"column-label\" data-sq-column-index=\"1\">Q2</text></g><rect x=\"749\" y=\"34\" width=\"14\" height=\"6.594\" fill=\"#b41c2d\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"0\"/><rect x=\"749\" y=\"40.094\" width=\"14\" height=\"6.594\" fill=\"#b82330\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"1\"/><rect x=\"749\" y=\"46.188\" width=\"14\" height=\"6.594\" fill=\"#bc2a34\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"2\"/><rect x=\"749\" y=\"52.281\" width=\"14\" height=\"6.594\" fill=\"#bf3137\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"3\"/><rect x=\"749\" y=\"58.375\" width=\"14\" height=\"6.594\" fill=\"#c3383a\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"4\"/><rect x=\"749\" y=\"64.469\" width=\"14\" height=\"6.594\" fill=\"#c73f3e\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"5\"/><rect x=\"749\" y=\"70.562\" width=\"14\" height=\"6.594\" fill=\"#cb4641\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"6\"/><rect x=\"749\" y=\"76.656\" width=\"14\" height=\"6.594\" fill=\"#cf4d45\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"7\"/><rect x=\"749\" y=\"82.75\" width=\"14\" height=\"6.594\" fill=\"#d25548\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"8\"/><rect x=\"749\" y=\"88.844\" width=\"14\" height=\"6.594\" fill=\"#d65c4c\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"9\"/><rect x=\"749\" y=\"94.938\" width=\"14\" height=\"6.594\" fill=\"#da634f\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"10\"/><rect x=\"749\" y=\"101.031\" width=\"14\" height=\"6.594\" fill=\"#de6a53\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"11\"/><rect x=\"749\" y=\"107.125\" width=\"14\" height=\"6.594\" fill=\"#e27156\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"12\"/><rect x=\"749\" y=\"113.219\" width=\"14\" height=\"6.594\" fill=\"#e57859\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"13\"/><rect x=\"749\" y=\"119.312\" width=\"14\" height=\"6.594\" fill=\"#e97f5d\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"14\"/><rect x=\"749\" y=\"125.406\" width=\"14\" height=\"6.594\" fill=\"#ed8660\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"15\"/><rect x=\"749\" y=\"131.5\" width=\"14\" height=\"6.594\" fill=\"#ef8d67\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"16\"/><rect x=\"749\" y=\"137.594\" width=\"14\" height=\"6.594\" fill=\"#f09470\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"17\"/><rect x=\"749\" y=\"143.688\" width=\"14\" height=\"6.594\" fill=\"#f09b79\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"18\"/><rect x=\"749\" y=\"149.781\" width=\"14\" height=\"6.594\" fill=\"#f1a283\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"19\"/><rect x=\"749\" y=\"155.875\" width=\"14\" height=\"6.594\" fill=\"#f1a98c\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"20\"/><rect x=\"749\" y=\"161.969\" width=\"14\" height=\"6.594\" fill=\"#f2af95\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"21\"/><rect x=\"749\" y=\"168.062\" width=\"14\" height=\"6.594\" fill=\"#f2b69f\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"22\"/><rect x=\"749\" y=\"174.156\" width=\"14\" height=\"6.594\" fill=\"#f3bda8\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"23\"/><rect x=\"749\" y=\"180.25\" width=\"14\" height=\"6.594\" fill=\"#f3c4b1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"24\"/><rect x=\"749\" y=\"186.344\" width=\"14\" height=\"6.594\" fill=\"#f4cbba\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"25\"/><rect x=\"749\" y=\"192.438\" width=\"14\" height=\"6.594\" fill=\"#f4d2c4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"26\"/><rect x=\"749\" y=\"198.531\" width=\"14\" height=\"6.594\" fill=\"#f5d8cd\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"27\"/><rect x=\"749\" y=\"204.625\" width=\"14\" height=\"6.594\" fill=\"#f5dfd6\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"28\"/><rect x=\"749\" y=\"210.719\" width=\"14\" height=\"6.594\" fill=\"#f6e6e0\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"29\"/><rect x=\"749\" y=\"216.812\" width=\"14\" height=\"6.594\" fill=\"#f6ede9\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"30\"/><rect x=\"749\" y=\"222.906\" width=\"14\" height=\"6.594\" fill=\"#f7f4f2\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"31\"/><rect x=\"749\" y=\"229\" width=\"14\" height=\"6.594\" fill=\"#f3f5f6\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"32\"/><rect x=\"749\" y=\"235.094\" width=\"14\" height=\"6.594\" fill=\"#eaf0f3\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"33\"/><rect x=\"749\" y=\"241.188\" width=\"14\" height=\"6.594\" fill=\"#e1ebf1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"34\"/><rect x=\"749\" y=\"247.281\" width=\"14\" height=\"6.594\" fill=\"#d8e6ee\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"35\"/><rect x=\"749\" y=\"253.375\" width=\"14\" height=\"6.594\" fill=\"#cfe1ec\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"36\"/><rect x=\"749\" y=\"259.469\" width=\"14\" height=\"6.594\" fill=\"#c6dce9\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"37\"/><rect x=\"749\" y=\"265.562\" width=\"14\" height=\"6.594\" fill=\"#bdd7e7\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"38\"/><rect x=\"749\" y=\"271.656\" width=\"14\" height=\"6.594\" fill=\"#b4d2e4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"39\"/><rect x=\"749\" y=\"277.75\" width=\"14\" height=\"6.594\" fill=\"#abcee2\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"40\"/><rect x=\"749\" y=\"283.844\" width=\"14\" height=\"6.594\" fill=\"#a2c9df\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"41\"/><rect x=\"749\" y=\"289.938\" width=\"14\" height=\"6.594\" fill=\"#99c4dd\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"42\"/><rect x=\"749\" y=\"296.031\" width=\"14\" height=\"6.594\" fill=\"#90bfda\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"43\"/><rect x=\"749\" y=\"302.125\" width=\"14\" height=\"6.594\" fill=\"#87bad8\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"44\"/><rect x=\"749\" y=\"308.219\" width=\"14\" height=\"6.594\" fill=\"#7eb5d5\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"45\"/><rect x=\"749\" y=\"314.312\" width=\"14\" height=\"6.594\" fill=\"#75b0d3\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"46\"/><rect x=\"749\" y=\"320.406\" width=\"14\" height=\"6.594\" fill=\"#6cabd0\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"47\"/><rect x=\"749\" y=\"326.5\" width=\"14\" height=\"6.594\" fill=\"#65a7ce\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"48\"/><rect x=\"749\" y=\"332.594\" width=\"14\" height=\"6.594\" fill=\"#60a3cc\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"49\"/><rect x=\"749\" y=\"338.688\" width=\"14\" height=\"6.594\" fill=\"#5c9fca\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"50\"/><rect x=\"749\" y=\"344.781\" width=\"14\" height=\"6.594\" fill=\"#589ac7\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"51\"/><rect x=\"749\" y=\"350.875\" width=\"14\" height=\"6.594\" fill=\"#5396c5\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"52\"/><rect x=\"749\" y=\"356.969\" width=\"14\" height=\"6.594\" fill=\"#4f92c3\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"53\"/><rect x=\"749\" y=\"363.062\" width=\"14\" height=\"6.594\" fill=\"#4b8ec1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"54\"/><rect x=\"749\" y=\"369.156\" width=\"14\" height=\"6.594\" fill=\"#468abf\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"55\"/><rect x=\"749\" y=\"375.25\" width=\"14\" height=\"6.594\" fill=\"#4285bc\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"56\"/><rect x=\"749\" y=\"381.344\" width=\"14\" height=\"6.594\" fill=\"#3d81ba\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"57\"/><rect x=\"749\" y=\"387.438\" width=\"14\" height=\"6.594\" fill=\"#397db8\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"58\"/><rect x=\"749\" y=\"393.531\" width=\"14\" height=\"6.594\" fill=\"#3579b6\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"59\"/><rect x=\"749\" y=\"399.625\" width=\"14\" height=\"6.594\" fill=\"#3075b4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"60\"/><rect x=\"749\" y=\"405.719\" width=\"14\" height=\"6.594\" fill=\"#2c70b1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"61\"/><rect x=\"749\" y=\"411.812\" width=\"14\" height=\"6.594\" fill=\"#286caf\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"62\"/><rect x=\"749\" y=\"417.906\" width=\"14\" height=\"6.594\" fill=\"#2368ad\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"63\"/><text x=\"767\" y=\"37.5\" font-size=\"10\" text-anchor=\"start\" textLength=\"24\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-tick-label\" data-sq-role=\"legend-label\">1.00</text><text x=\"767\" y=\"424\" font-size=\"10\" text-anchor=\"start\" textLength=\"30\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-tick-label\" data-sq-role=\"legend-label\">-1.00</text><text x=\"400\" y=\"28\" font-size=\"16\" text-anchor=\"middle\" fill=\"#101828\" class=\"sq-title\" data-sq-role=\"title\">Regional deviation</text></g></svg>",
"columnResults": [
{
"id": "q1",
"label": "Q1",
"inputIndex": 0,
"nonNullCount": 1,
"missingCount": 1,
"min": "0.9",
"max": "0.9"
},
{
"id": "q2",
"label": "Q2",
"inputIndex": 1,
"nonNullCount": 2,
"missingCount": 0,
"min": "-0.2",
"max": "0.4"
}
],
"renderSummary": {
"skill": "chart.heatmap",
"rowCount": 2,
"columnCount": 2,
"cellCount": 4,
"missingCount": 1
},
"viewBox": "0 0 800 500",
"width": 800,
"scaleResult": {
"type": "diverging",
"mapping": "continuous",
"midpoint": "0",
"min": "-1",
"max": "1"
},
"cellResults": [
{
"rowId": "north",
"columnId": "q1",
"rowIndex": 0,
"columnIndex": 0,
"value": "0.9",
"status": "value",
"targetKey": "t-heatmap-cell-f57e6fe02ca855e6",
"normalizedPosition": "0.95"
},
{
"rowId": "north",
"columnId": "q2",
"rowIndex": 0,
"columnIndex": 1,
"value": "0.4",
"status": "value",
"targetKey": "t-heatmap-cell-3e438eb51545c5ba",
"normalizedPosition": "0.7"
},
{
"rowId": "south",
"columnId": "q1",
"rowIndex": 1,
"columnIndex": 0,
"value": null,
"status": "missing",
"targetKey": "t-heatmap-cell-337fe3936a091105"
},
{
"rowId": "south",
"columnId": "q2",
"rowIndex": 1,
"columnIndex": 1,
"value": "-0.2",
"status": "value",
"targetKey": "t-heatmap-cell-327b736b4e3165f0",
"normalizedPosition": "0.4"
}
],
"height": 500,
"transformationSummary": {
"applied": false,
"operations": [],
"affectedCategoryCount": 0,
"affectedPointCount": 0,
"affectedLabelCount": 0
}
}Annotated service matrix
{
"rows": [
{
"label": "API",
"id": "api"
}
],
"values": [
[
"0.25",
"0.75"
]
],
"annotations": {
"mode": "values"
},
"columns": [
{
"label": "Latency",
"id": "latency"
},
{
"label": "Errors",
"id": "errors"
}
]
}{
"rowResults": [
{
"id": "api",
"label": "API",
"inputIndex": 0,
"nonNullCount": 2,
"missingCount": 0,
"min": "0.25",
"max": "0.75"
}
],
"accessibility": {
"title": "Heatmap with 1 × 2 cells",
"detail": "full",
"description": "Dense (heatmap) chart. 1 rows × 2 columns, sequential scale from 0.25 to 0.75. Cells: API/Latency 0.25, API/Errors 0.75. All values are listed."
},
"svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"800\" height=\"500\" viewBox=\"0 0 800 500\" role=\"img\" class=\"sq-chart sq-chart--heatmap sq-family--dense sq-theme--squillify sq-surface--light sq-density--standard\" data-sq-style-contract=\"CHART_STYLE@1\" data-sq-chart=\"heatmap\" data-sq-family=\"dense\" data-sq-theme=\"squillify\" data-sq-theme-version=\"1\" data-sq-surface=\"light\" data-sq-density=\"standard\" data-sq-a11y-detail=\"full\" aria-labelledby=\"sq-eeca2fdda868-title-0 sq-eeca2fdda868-desc-1\"><title id=\"sq-eeca2fdda868-title-0\">Heatmap with 1 × 2 cells</title><desc id=\"sq-eeca2fdda868-desc-1\">Dense (heatmap) chart. 1 rows × 2 columns, sequential scale from 0.25 to 0.75. Cells: API/Latency 0.25, API/Errors 0.75. All values are listed.</desc><style>.sq-chart{--sq-chart-axis:#c9d1df;--sq-chart-font-family:'Squillify Mono', 'IBM Plex Mono', monospace;--sq-chart-grid:#d8dee9;--sq-chart-surface:#ffffff;--sq-chart-text-muted:#667085;--sq-chart-text-primary:#101828;--sq-series-1:#2563eb;--sq-series-2:#6d5ce7;--sq-series-3:#168a5b;--sq-series-4:#c45412;--sq-series-5:#d92d20;--sq-series-6:#667085;font-family:var(--sq-chart-font-family);font-weight:500;}.sq-chart .sq-background{fill:var(--sq-chart-surface);}.sq-chart .sq-tick-label{fill:var(--sq-chart-text-muted);}.sq-chart .sq-category-label{fill:var(--sq-chart-text-muted);}</style><rect x=\"0\" y=\"0\" width=\"800\" height=\"500\" fill=\"#ffffff\" class=\"sq-background\" data-sq-role=\"background\"/><g class=\"sq-plot\" data-sq-role=\"plot\"><g class=\"sq-mark\" data-sq-role=\"plot\"><rect x=\"37\" y=\"12\" width=\"352\" height=\"412\" fill=\"#eff3ff\" class=\"sq-mark sq-cell\" data-sq-role=\"heatmap-cell\" data-sq-target-key=\"t-heatmap-cell-f57e6fe02ca855e6\" data-sq-row-index=\"0\" data-sq-column-index=\"0\"/><rect x=\"389\" y=\"12\" width=\"352\" height=\"412\" fill=\"#08519c\" class=\"sq-mark sq-cell\" data-sq-role=\"heatmap-cell\" data-sq-target-key=\"t-heatmap-cell-3e438eb51545c5ba\" data-sq-row-index=\"0\" data-sq-column-index=\"1\"/></g><text x=\"213\" y=\"221.5\" font-size=\"10\" text-anchor=\"middle\" textLength=\"24\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label\" data-sq-role=\"cell-annotation\" data-sq-row-index=\"0\" data-sq-column-index=\"0\">0.25</text><text x=\"565\" y=\"221.5\" font-size=\"10\" text-anchor=\"middle\" textLength=\"24\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label\" data-sq-role=\"cell-annotation\" data-sq-row-index=\"0\" data-sq-column-index=\"1\">0.75</text><text x=\"31\" y=\"221.5\" font-size=\"10\" text-anchor=\"end\" textLength=\"18\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-category-label\" data-sq-role=\"row-label\" data-sq-row-index=\"0\">API</text><g transform=\"translate(213 430) rotate(-45)\"><text x=\"0\" y=\"0\" font-size=\"10\" text-anchor=\"end\" textLength=\"42\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-category-label\" data-sq-role=\"column-label\" data-sq-column-index=\"0\">Latency</text></g><g transform=\"translate(565 430) rotate(-45)\"><text x=\"0\" y=\"0\" font-size=\"10\" text-anchor=\"end\" textLength=\"36\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-category-label\" data-sq-role=\"column-label\" data-sq-column-index=\"1\">Errors</text></g><rect x=\"749\" y=\"12\" width=\"14\" height=\"6.938\" fill=\"#09539d\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"0\"/><rect x=\"749\" y=\"18.438\" width=\"14\" height=\"6.938\" fill=\"#0c569f\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"1\"/><rect x=\"749\" y=\"24.875\" width=\"14\" height=\"6.938\" fill=\"#0e59a1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"2\"/><rect x=\"749\" y=\"31.312\" width=\"14\" height=\"6.938\" fill=\"#115ca3\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"3\"/><rect x=\"749\" y=\"37.75\" width=\"14\" height=\"6.938\" fill=\"#145fa5\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"4\"/><rect x=\"749\" y=\"44.188\" width=\"14\" height=\"6.938\" fill=\"#1662a7\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"5\"/><rect x=\"749\" y=\"50.625\" width=\"14\" height=\"6.938\" fill=\"#1965a9\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"6\"/><rect x=\"749\" y=\"57.062\" width=\"14\" height=\"6.938\" fill=\"#1b68ab\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"7\"/><rect x=\"749\" y=\"63.5\" width=\"14\" height=\"6.938\" fill=\"#1e6bae\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"8\"/><rect x=\"749\" y=\"69.938\" width=\"14\" height=\"6.938\" fill=\"#206eb0\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"9\"/><rect x=\"749\" y=\"76.375\" width=\"14\" height=\"6.938\" fill=\"#2371b2\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"10\"/><rect x=\"749\" y=\"82.812\" width=\"14\" height=\"6.938\" fill=\"#2574b4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"11\"/><rect x=\"749\" y=\"89.25\" width=\"14\" height=\"6.938\" fill=\"#2877b6\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"12\"/><rect x=\"749\" y=\"95.688\" width=\"14\" height=\"6.938\" fill=\"#2b7ab8\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"13\"/><rect x=\"749\" y=\"102.125\" width=\"14\" height=\"6.938\" fill=\"#2d7dba\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"14\"/><rect x=\"749\" y=\"108.562\" width=\"14\" height=\"6.938\" fill=\"#3080bc\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"15\"/><rect x=\"749\" y=\"115\" width=\"14\" height=\"6.938\" fill=\"#3383be\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"16\"/><rect x=\"749\" y=\"121.438\" width=\"14\" height=\"6.938\" fill=\"#3686bf\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"17\"/><rect x=\"749\" y=\"127.875\" width=\"14\" height=\"6.938\" fill=\"#3a89c1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"18\"/><rect x=\"749\" y=\"134.312\" width=\"14\" height=\"6.938\" fill=\"#3e8cc2\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"19\"/><rect x=\"749\" y=\"140.75\" width=\"14\" height=\"6.938\" fill=\"#418ec4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"20\"/><rect x=\"749\" y=\"147.188\" width=\"14\" height=\"6.938\" fill=\"#4591c6\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"21\"/><rect x=\"749\" y=\"153.625\" width=\"14\" height=\"6.938\" fill=\"#4994c7\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"22\"/><rect x=\"749\" y=\"160.062\" width=\"14\" height=\"6.938\" fill=\"#4c97c9\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"23\"/><rect x=\"749\" y=\"166.5\" width=\"14\" height=\"6.938\" fill=\"#5099ca\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"24\"/><rect x=\"749\" y=\"172.938\" width=\"14\" height=\"6.938\" fill=\"#539ccc\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"25\"/><rect x=\"749\" y=\"179.375\" width=\"14\" height=\"6.938\" fill=\"#579fcd\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"26\"/><rect x=\"749\" y=\"185.812\" width=\"14\" height=\"6.938\" fill=\"#5ba2cf\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"27\"/><rect x=\"749\" y=\"192.25\" width=\"14\" height=\"6.938\" fill=\"#5ea4d1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"28\"/><rect x=\"749\" y=\"198.688\" width=\"14\" height=\"6.938\" fill=\"#62a7d2\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"29\"/><rect x=\"749\" y=\"205.125\" width=\"14\" height=\"6.938\" fill=\"#66aad4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"30\"/><rect x=\"749\" y=\"211.562\" width=\"14\" height=\"6.938\" fill=\"#69add5\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"31\"/><rect x=\"749\" y=\"218\" width=\"14\" height=\"6.938\" fill=\"#6eafd7\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"32\"/><rect x=\"749\" y=\"224.438\" width=\"14\" height=\"6.938\" fill=\"#73b2d8\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"33\"/><rect x=\"749\" y=\"230.875\" width=\"14\" height=\"6.938\" fill=\"#78b4da\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"34\"/><rect x=\"749\" y=\"237.312\" width=\"14\" height=\"6.938\" fill=\"#7db7db\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"35\"/><rect x=\"749\" y=\"243.75\" width=\"14\" height=\"6.938\" fill=\"#82badd\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"36\"/><rect x=\"749\" y=\"250.188\" width=\"14\" height=\"6.938\" fill=\"#87bcde\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"37\"/><rect x=\"749\" y=\"256.625\" width=\"14\" height=\"6.938\" fill=\"#8cbfe0\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"38\"/><rect x=\"749\" y=\"263.062\" width=\"14\" height=\"6.938\" fill=\"#91c1e1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"39\"/><rect x=\"749\" y=\"269.5\" width=\"14\" height=\"6.938\" fill=\"#97c4e3\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"40\"/><rect x=\"749\" y=\"275.938\" width=\"14\" height=\"6.938\" fill=\"#9cc6e4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"41\"/><rect x=\"749\" y=\"282.375\" width=\"14\" height=\"6.938\" fill=\"#a1c9e6\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"42\"/><rect x=\"749\" y=\"288.812\" width=\"14\" height=\"6.938\" fill=\"#a6cbe7\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"43\"/><rect x=\"749\" y=\"295.25\" width=\"14\" height=\"6.938\" fill=\"#abcee9\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"44\"/><rect x=\"749\" y=\"301.688\" width=\"14\" height=\"6.938\" fill=\"#b0d1ea\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"45\"/><rect x=\"749\" y=\"308.125\" width=\"14\" height=\"6.938\" fill=\"#b5d3ec\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"46\"/><rect x=\"749\" y=\"314.562\" width=\"14\" height=\"6.938\" fill=\"#bad6ed\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"47\"/><rect x=\"749\" y=\"321\" width=\"14\" height=\"6.938\" fill=\"#bfd8ef\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"48\"/><rect x=\"749\" y=\"327.438\" width=\"14\" height=\"6.938\" fill=\"#c2daf0\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"49\"/><rect x=\"749\" y=\"333.875\" width=\"14\" height=\"6.938\" fill=\"#c5dbf1\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"50\"/><rect x=\"749\" y=\"340.312\" width=\"14\" height=\"6.938\" fill=\"#c8ddf2\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"51\"/><rect x=\"749\" y=\"346.75\" width=\"14\" height=\"6.938\" fill=\"#cbdff3\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"52\"/><rect x=\"749\" y=\"353.188\" width=\"14\" height=\"6.938\" fill=\"#cee1f4\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"53\"/><rect x=\"749\" y=\"359.625\" width=\"14\" height=\"6.938\" fill=\"#d1e2f5\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"54\"/><rect x=\"749\" y=\"366.062\" width=\"14\" height=\"6.938\" fill=\"#d4e4f6\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"55\"/><rect x=\"749\" y=\"372.5\" width=\"14\" height=\"6.938\" fill=\"#d8e6f7\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"56\"/><rect x=\"749\" y=\"378.938\" width=\"14\" height=\"6.938\" fill=\"#dbe8f8\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"57\"/><rect x=\"749\" y=\"385.375\" width=\"14\" height=\"6.938\" fill=\"#dee9f9\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"58\"/><rect x=\"749\" y=\"391.812\" width=\"14\" height=\"6.938\" fill=\"#e1ebfa\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"59\"/><rect x=\"749\" y=\"398.25\" width=\"14\" height=\"6.938\" fill=\"#e4edfb\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"60\"/><rect x=\"749\" y=\"404.688\" width=\"14\" height=\"6.938\" fill=\"#e7effc\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"61\"/><rect x=\"749\" y=\"411.125\" width=\"14\" height=\"6.938\" fill=\"#eaf0fd\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"62\"/><rect x=\"749\" y=\"417.562\" width=\"14\" height=\"6.938\" fill=\"#edf2fe\" class=\"sq-scale-legend\" data-sq-role=\"legend-bin\" data-sq-palette-index=\"63\"/><text x=\"767\" y=\"15.5\" font-size=\"10\" text-anchor=\"start\" textLength=\"24\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-tick-label\" data-sq-role=\"legend-label\">0.75</text><text x=\"767\" y=\"424\" font-size=\"10\" text-anchor=\"start\" textLength=\"24\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-label sq-tick-label\" data-sq-role=\"legend-label\">0.25</text></g></svg>",
"columnResults": [
{
"id": "latency",
"label": "Latency",
"inputIndex": 0,
"nonNullCount": 1,
"missingCount": 0,
"min": "0.25",
"max": "0.25"
},
{
"id": "errors",
"label": "Errors",
"inputIndex": 1,
"nonNullCount": 1,
"missingCount": 0,
"min": "0.75",
"max": "0.75"
}
],
"renderSummary": {
"skill": "chart.heatmap",
"rowCount": 1,
"columnCount": 2,
"cellCount": 2,
"missingCount": 0
},
"viewBox": "0 0 800 500",
"width": 800,
"scaleResult": {
"type": "sequential",
"min": "0.25",
"max": "0.75",
"mapping": "continuous"
},
"cellResults": [
{
"rowId": "api",
"columnId": "latency",
"rowIndex": 0,
"columnIndex": 0,
"value": "0.25",
"status": "value",
"targetKey": "t-heatmap-cell-f57e6fe02ca855e6",
"normalizedPosition": "0"
},
{
"rowId": "api",
"columnId": "errors",
"rowIndex": 0,
"columnIndex": 1,
"value": "0.75",
"status": "value",
"targetKey": "t-heatmap-cell-3e438eb51545c5ba",
"normalizedPosition": "1"
}
],
"height": 500,
"transformationSummary": {
"applied": false,
"operations": [],
"affectedCategoryCount": 0,
"affectedPointCount": 0,
"affectedLabelCount": 0
}
}Recommended use cases
- Show a supplied intensity or risk matrix
- Publish a confusion matrix you already calculated
- Inspect exact values through host focus panels
Avoid for
- Calendar geometry
- Categorical glyph matrices
- Matrices that need computed clustering
Related skills
Composable with
Safety & privacy
- Runs without calling any external service.
- Your payloads are never stored permanently.
- Telemetry captures metadata only — never your payload contents.
- We never train models on your payloads.
- No human reviews your payloads.