Skip to main content

Squillify development is paused indefinitely. Read why, and discover what this experiment achieved. Read the story

MicroSkills Reference

Radar chart

chart.radar

ProductionBounded custom (Class B)Deterministicstrictmoderatev1.0.0
No network

Overview

Normalize each supplied value only within its declared dimension domain, preserving axis order, polarity, units, and complete profile semantics. Polygon area is never a score. 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.

Multivariate profiles need exact independent domains and an explicit warning against treating polygon area as an aggregate score.

Reliability

We use your dimension order to fix geometry; polarity is reported but never reverses the radial scale. Declared failures: RADAR_DIMENSION_INVALID — trigger: a dimension id, label, exact domain, polarity, or item bound is invalid; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. RADAR_PROFILE_INVALID — trigger: a profile id repeats or its values do not align with every dimension; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. RADAR_VALUE_OUT_OF_DOMAIN — trigger: a supplied exact profile value lies outside its declared dimension domain; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. RADAR_REFERENCE_INVALID — trigger: a reference profile or radial threshold is incomplete or invalid; retryable: no; unchanged input: will not succeed; next: follow the recovery intent in the error details. CHART_CAPACITY_EXCEEDED — trigger: the radius, labels, vertices, references, patterns, targets, or bytes 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_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.

Context footprint

Capacity prices labels, radius, vertices, references, behavior and bytes. A successful call costs 3 execution credits.

When to use it

When all dimensions, domains, and complete profile values are supplied.

When values are missing or an overall score must be computed.

Scope

Note
Complete exact profiles over 3..24 caller-ordered declared domains.

Non-goals

  • Overall scoring or ranking
  • Axis reordering
  • Missing profile values
  • Correlation or similarity calculation

Properties

IdempotentRetry safeStreaming supportedFile input supportedRequires external service

Capabilities

generationimage-processing

Cost & billing

Flat rate per invocation

MetercallsBillable onsuccessCost per call3 credits

File handling

Accepts file_refProduces file_refMax input488.3 KB

How we handle your data

Sensitive output possible
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.

Read the Microskill Data Handling Policy

Input schema

FieldTypeRequiredDescription
dimensionsarrayYes3..24 caller-ordered dimensions with exact min/max, unit, and polarity.
profilesarrayYes1..8 complete caller-order profiles with one exact value per dimension.
normalizationstringNodomainPosition is the only v1 value and the default when omitted.
gridobjectNoOptional object with shape polygon or circle and levels from 2..10; omit it for polygon with five levels.
directionstringNoclockwise or counterclockwise; default clockwise when omitted.
startAnglestringNotop, right, bottom, or left; default top when omitted.
markersbooleanNoShow exact profile vertices; default true when omitted.
fillbooleanNoShow translucent profile identity fill; default true when omitted.
referenceProfilesarrayNoOptional array of 0..4 objects with id, label, complete values, and explicit meaning; omit it for no reference profiles.
radialThresholdsarrayNoOptional array of 0..8 objects with id, normalized exact position, and explanatory label; omit it for no thresholds.
legendobjectNoOptional object with visible and placement properties; omit it for automatic legend visibility.
layoutobjectNoOptional object with margin, labelPadding, and insufficient-space policy; omit it for certified default geometry.
widthintegerNoCanvas width in pixels, 100..1600 (optional; default 720). 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.
heightintegerNoCanvas height in pixels, 100..1600 (optional; default 520). 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.
titlestringNoHeading 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.
subtitlestringNoSecond 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.
captionstringNoOptional bounded caption drawn below the radar; omit it and no caption is emitted.
sourcestringNoOptional bounded source attribution; omit it and no source line is emitted.
periodstringNoOptional bounded reporting-period label; omit it and no period line is emitted.
themestringNoVisual language: basic, modern or squillify (optional; default squillify). An unregistered value is rejected with the registered names listed — we never substitute silently.
surfacestringNoSurface the theme renders on: dark or light (optional; default light).
densitystringNoHow tightly the chrome is packed: compact, standard or spacious (optional; default standard). Density scales spacing only — it never lowers a legibility minimum.
visualProfilestringNoWhat 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.
localizationobjectNoOptional closed object with locale and number-format properties for visible text only; omit it for the default locale.
styleobjectNoOptional 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.
behaviorobjectNoOptional object for enter_profiles, update_profiles, focus_profile, focus_dimension, and trace_dimensions; 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.
accessibilityobjectNoOptional object with detail and maxItems properties; omit it for the default bounded dimension reading order.
outputobjectNoOutput 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

FieldTypeRequiredDescription
svgstringYesAllowlist-checked 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.
widthintegerYesRendered width in pixels.
heightintegerYesRendered height in pixels.
viewBoxstringYesSVG viewBox string (for example "0 0 800 400").
dimensionResultsarrayYesCaller-order exact domains, units, polarity, angle, and labels.
profileResultsarrayYesArray of caller-order profile objects with id, label, exact raw values, normalized positions, and stable target keys.
referenceResultsarrayYesArray of reference-profile and radial-threshold objects with exact supplied values, meaning, and target identity.
gridResultobjectYesObject with resolved shape, level count, direction, start angle, center, and radius properties.
accessibilityobjectNoOptional object containing bounded data-equivalent reading text, detail level, and truncation metadata.
renderSummaryobjectYesObject with bounded dimension, profile, reference, threshold, vertex, and target counts or flags.
transformationSummaryobjectYesObject proving only declared domain-position normalization occurred and no scoring, weighting, or area ranking was inferred.
styleReportobjectNoAlways reports the resolved typographyProfile and fontMetrics contract, plus tokensApplied, rulesApplied, typedRulesApplied, typedAssignmentsApplied, rulesDropped, declarationsDropped and, when anything was dropped, a bounded list of reasons.
warningsarrayNoPresent 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.
behaviorobjectNoResolved 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/execute
curl
curl -sS -X POST "$BASE/v1/execute" \
  -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"skillKey":"chart.radar","input":{"dimensions":[{"id":"a","label":"A","min":"0","max":"10"},{"id":"b","label":"B","min":"0","max":"10"},{"id":"c","label":"C","min":"0","max":"10"}],"profiles":[{"id":"current","label":"Current","values":["2","5","8"]}]}}'
Integrations
TypeScript SDK
import { Squillify } from "@squillify/sdk";

const sq = new Squillify({ apiKey: process.env.SQUILLIFY_API_KEY });

const { output } = await sq.execute("chart.radar", {"dimensions":[{"unit":"%","min":"0","id":"quality","label":"Quality","max":"100","polarity":"higherBetter"},{"unit":"EUR","min":"0","id":"cost","label":"Cost","max":"500","polarity":"lowerBetter"},{"unit":"days","min":"0","id":"speed","label":"Speed","max":"10","polarity":"lowerBetter"}],"profiles":[{"id":"current","label":"Current","values":["78","320","4"]}]});

Errors

CodeHTTPRetryableDescription
VALIDATION_ERROR400NoThe request payload failed schema validation.
UNAUTHORIZED401NoMissing or invalid API key.
SKILL_NOT_ACCESSIBLE403NoThe API key is not granted access to this skill.
SKILL_NOT_AVAILABLE_FOR_PLAN403NoThis skill is not included in your current plan.
PLAN_ELIGIBILITY_UNAVAILABLE503YesPlan eligibility could not be decided. Retry after backoff.
SKILL_NOT_FOUND404NoThe requested skill or version does not exist.
TENANT_RATE_LIMITED429YesRequest rate limit exceeded. Retry after backoff.
QUOTA_EXCEEDED429YesPlan quota exhausted. Retryable once the quota period resets.
EXECUTION_TIMEOUT504YesExecution exceeded the allowed time budget.
RADAR_DIMENSION_INVALID400NoThe request payload failed this skill's input validation.
RADAR_PROFILE_INVALID400NoThe request payload failed this skill's input validation.
RADAR_VALUE_OUT_OF_DOMAIN400NoThe request payload failed this skill's input validation.
RADAR_REFERENCE_INVALID400NoThe request payload failed this skill's input validation.
CHART_CAPACITY_EXCEEDED429NoA size, quota, rate, or time limit was exceeded.
CHART_OUTPUT_TOO_LARGE429NoA size, quota, rate, or time limit was exceeded.
CHART_UNSAFE_OUTPUT500NoThe skill encountered an unexpected execution failure.

Other limits

LimitValue
Recommended inline bytes32 KiB

Limitations

  • Overall scoring or ranking
  • Axis reordering
  • Missing profile values
  • Correlation or similarity calculation
  • Ranking by polygon area
  • Many profiles or dimensions
  • Missing values

How to call

POST /v1/execute (requires authentication)

Request bodyjson
{
  "skillKey": "chart.radar",
  "input": {
    "dimensions": [
      {
        "unit": "%",
        "min": "0",
        "id": "quality",
        "label": "Quality",
        "max": "100",
        "polarity": "higherBetter"
      },
      {
        "unit": "EUR",
        "min": "0",
        "id": "cost",
        "label": "Cost",
        "max": "500",
        "polarity": "lowerBetter"
      },
      {
        "unit": "days",
        "min": "0",
        "id": "speed",
        "label": "Speed",
        "max": "10",
        "polarity": "lowerBetter"
      }
    ],
    "profiles": [
      {
        "id": "current",
        "label": "Current",
        "values": [
          "78",
          "320",
          "4"
        ]
      }
    ]
  }
}

Examples

Operating profile

Inputjson
{
  "dimensions": [
    {
      "unit": "%",
      "min": "0",
      "id": "quality",
      "label": "Quality",
      "max": "100",
      "polarity": "higherBetter"
    },
    {
      "unit": "EUR",
      "min": "0",
      "id": "cost",
      "label": "Cost",
      "max": "500",
      "polarity": "lowerBetter"
    },
    {
      "unit": "days",
      "min": "0",
      "id": "speed",
      "label": "Speed",
      "max": "10",
      "polarity": "lowerBetter"
    }
  ],
  "profiles": [
    {
      "id": "current",
      "label": "Current",
      "values": [
        "78",
        "320",
        "4"
      ]
    }
  ]
}
Expected outputjson
{
  "accessibility": {
    "title": "Radar chart with 1 profiles across 3 dimensions",
    "detail": "full",
    "description": "Radar chart. 1 profiles across 3 caller-ordered dimensions; distinct domains and units; polygon area is not a score. Current: Quality raw 78 % normalized 0.78 polarity highe… 0.78, Cost raw 320 EUR normalized 0.64 polarity lower… 0.64, Speed raw 4 days normalized 0.4 polarity lower_… 0.4. All values are listed."
  },
  "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"720\" height=\"520\" viewBox=\"0 0 720 520\" role=\"img\" class=\"sq-chart sq-chart--radar sq-family--relationship sq-theme--squillify sq-surface--light sq-density--standard\" data-sq-style-contract=\"CHART_STYLE@1\" data-sq-chart=\"radar\" data-sq-family=\"relationship\" 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-ed387289f619-title-0 sq-ed387289f619-desc-1\"><title id=\"sq-ed387289f619-title-0\">Radar chart with 1 profiles across 3 dimensions</title><desc id=\"sq-ed387289f619-desc-1\">Radar chart. 1 profiles across 3 caller-ordered dimensions; distinct domains and units; polygon area is not a score. Current: Quality raw 78 % normalized 0.78 polarity highe… 0.78, Cost raw 320 EUR normalized 0.64 polarity lower… 0.64, Speed raw 4 days normalized 0.4 polarity lower_… 0.4. 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-legend-label{fill:var(--sq-chart-text-primary);}.sq-chart .sq-legend-swatch[data-sq-palette-index=\"0\"]{fill:var(--sq-series-1);}</style><rect x=\"0\" y=\"0\" width=\"720\" height=\"520\" fill=\"#ffffff\" class=\"sq-background\" data-sq-role=\"background\"/><g class=\"sq-plot\" data-sq-role=\"plot\"><path d=\"M 282.5 222.8 L 314.716 278.6 L 250.284 278.6 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"0\"/><path d=\"M 282.5 185.6 L 346.932 297.2 L 218.068 297.2 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"1\"/><path d=\"M 282.5 148.4 L 379.148 315.8 L 185.852 315.8 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"2\"/><path d=\"M 282.5 111.2 L 411.365 334.4 L 153.635 334.4 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"3\"/><path d=\"M 282.5 74 L 443.581 353 L 121.419 353 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"4\"/><line x1=\"282.5\" y1=\"260\" x2=\"282.5\" y2=\"74\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-spoke\" data-sq-role=\"radar-spoke\" data-sq-point-index=\"0\"/><line x1=\"282.5\" y1=\"260\" x2=\"443.581\" y2=\"353\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-spoke\" data-sq-role=\"radar-spoke\" data-sq-point-index=\"1\"/><line x1=\"282.5\" y1=\"260\" x2=\"121.419\" y2=\"353\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-spoke\" data-sq-role=\"radar-spoke\" data-sq-point-index=\"2\"/><g class=\"sq-radar-profile-group\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-profile-2647dc264ea84b7c\" data-sq-series-index=\"0\" data-sq-palette-index=\"0\"><path d=\"M 282.5 260 L 282.5 114.92 L 385.592 319.52 L 282.5 260 Z\" fill=\"#2563eb\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-0a7fdf24d9a964c4\" data-sq-series-index=\"0\" data-sq-point-index=\"0\" data-sq-palette-index=\"0\"/><path d=\"M 282.5 114.92 L 385.592 319.52 L 385.592 319.52 L 282.5 114.92 Z\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-639c8760729ef829\" data-sq-series-index=\"0\" data-sq-point-index=\"0\" data-sq-palette-index=\"0\"/><path d=\"M 282.5 260 L 385.592 319.52 L 218.068 297.2 L 282.5 260 Z\" fill=\"#2563eb\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-63fa8b060bba2755\" data-sq-series-index=\"0\" data-sq-point-index=\"1\" data-sq-palette-index=\"0\"/><path d=\"M 385.592 319.52 L 218.068 297.2 L 218.068 297.2 L 385.592 319.52 Z\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-9bdcdc8b696d488b\" data-sq-series-index=\"0\" data-sq-point-index=\"1\" data-sq-palette-index=\"0\"/><path d=\"M 282.5 260 L 218.068 297.2 L 282.5 114.92 L 282.5 260 Z\" fill=\"#2563eb\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-bd14911df6691b18\" data-sq-series-index=\"0\" data-sq-point-index=\"2\" data-sq-palette-index=\"0\"/><path d=\"M 218.068 297.2 L 282.5 114.92 L 282.5 114.92 L 218.068 297.2 Z\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-dde116dea1e57a73\" data-sq-series-index=\"0\" data-sq-point-index=\"2\" data-sq-palette-index=\"0\"/><path d=\"M 286 114.92 L 285.531 116.67 L 284.25 117.951 L 282.5 118.42 L 280.75 117.951 L 279.469 116.67 L 279 114.92 L 279.469 113.17 L 280.75 111.889 L 282.5 111.42 L 284.25 111.889 L 285.531 113.17 Z\" fill=\"#2563eb\" stroke=\"#2563eb\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-77928d77f4116083\" data-sq-series-index=\"0\" data-sq-point-index=\"0\" data-sq-palette-index=\"0\"/><path d=\"M 389.092 319.52 L 388.623 321.27 L 387.342 322.551 L 385.592 323.02 L 383.842 322.551 L 382.561 321.27 L 382.092 319.52 L 382.561 317.77 L 383.842 316.489 L 385.592 316.02 L 387.342 316.489 L 388.623 317.77 Z\" fill=\"#2563eb\" stroke=\"#2563eb\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-ed332b18cebfddfa\" data-sq-series-index=\"0\" data-sq-point-index=\"1\" data-sq-palette-index=\"0\"/><path d=\"M 221.568 297.2 L 221.099 298.95 L 219.818 300.231 L 218.068 300.7 L 216.318 300.231 L 215.037 298.95 L 214.568 297.2 L 215.037 295.45 L 216.318 294.169 L 218.068 293.7 L 219.818 294.169 L 221.099 295.45 Z\" fill=\"#2563eb\" stroke=\"#2563eb\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-7821b63358764b4d\" data-sq-series-index=\"0\" data-sq-point-index=\"2\" data-sq-palette-index=\"0\"/></g><text x=\"282.5\" y=\"59.5\" font-size=\"10\" text-anchor=\"middle\" textLength=\"42\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-radar-axis-label\" data-sq-role=\"radar-axis-label\" data-sq-point-index=\"0\">Quality</text><text x=\"459.169\" y=\"365.5\" font-size=\"10\" text-anchor=\"start\" textLength=\"24\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-radar-axis-label\" data-sq-role=\"radar-axis-label\" data-sq-point-index=\"1\">Cost</text><text x=\"105.831\" y=\"365.5\" font-size=\"10\" text-anchor=\"end\" textLength=\"30\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-radar-axis-label\" data-sq-role=\"radar-axis-label\" data-sq-point-index=\"2\">Speed</text><line x1=\"568\" y1=\"18\" x2=\"580\" y2=\"18\" stroke=\"#2563eb\" stroke-width=\"3\" class=\"sq-legend-swatch\" data-sq-role=\"legend-swatch\" data-sq-series-index=\"0\" data-sq-palette-index=\"0\"/><text x=\"586\" y=\"22\" font-size=\"10\" text-anchor=\"start\" textLength=\"42\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-legend-label\" data-sq-role=\"legend-label\" data-sq-series-index=\"0\">Current</text></g></svg>",
  "referenceResults": [],
  "renderSummary": {
    "variation": "radar",
    "dimensionCount": 3,
    "profileCount": 1,
    "referenceCount": 0,
    "gridShape": "polygon",
    "direction": "clockwise",
    "areaIsScore": false
  },
  "viewBox": "0 0 720 520",
  "dimensionResults": [
    {
      "max": "100",
      "polarity": "higherBetter",
      "shortLabel": "",
      "min": "0",
      "id": "quality",
      "label": "Quality",
      "inputIndex": 0,
      "unit": "%",
      "angleDegrees": -90
    },
    {
      "max": "500",
      "polarity": "lowerBetter",
      "shortLabel": "",
      "min": "0",
      "id": "cost",
      "label": "Cost",
      "inputIndex": 1,
      "unit": "EUR",
      "angleDegrees": 30
    },
    {
      "max": "10",
      "polarity": "lowerBetter",
      "shortLabel": "",
      "min": "0",
      "id": "speed",
      "label": "Speed",
      "inputIndex": 2,
      "unit": "days",
      "angleDegrees": 150
    }
  ],
  "gridResult": {
    "startAngle": "top",
    "direction": "clockwise",
    "radiusPx": 186,
    "levels": 5,
    "shape": "polygon"
  },
  "width": 720,
  "transformationSummary": {
    "applied": false,
    "operations": [],
    "affectedCategoryCount": 0,
    "affectedPointCount": 0,
    "affectedLabelCount": 0
  },
  "height": 520,
  "profileResults": [
    {
      "targetKey": "t-radar-profile-2647dc264ea84b7c",
      "id": "current",
      "label": "Current",
      "meaning": "",
      "inputIndex": 0,
      "visibility": "visible",
      "reference": false,
      "normalizedValues": [
        "0.78",
        "0.64",
        "0.4"
      ],
      "rawValues": [
        "78",
        "320",
        "4"
      ]
    }
  ]
}

Two exact profiles

Inputjson
{
  "dimensions": [
    {
      "min": "0",
      "id": "a",
      "label": "A",
      "max": "10"
    },
    {
      "min": "0",
      "id": "b",
      "label": "B",
      "max": "10"
    },
    {
      "min": "0",
      "id": "c",
      "label": "C",
      "max": "10"
    }
  ],
  "profiles": [
    {
      "id": "first",
      "label": "First",
      "values": [
        "2",
        "5",
        "8"
      ]
    },
    {
      "id": "second",
      "label": "Second",
      "values": [
        "8",
        "5",
        "2"
      ]
    }
  ]
}
Expected outputjson
{
  "accessibility": {
    "title": "Radar chart with 2 profiles across 3 dimensions",
    "detail": "full",
    "description": "Radar chart. 2 profiles across 3 caller-ordered dimensions; distinct domains and units; polygon area is not a score. First: A raw 2 normalized 0.2 polarity neutral 0.2, B raw 5 normalized 0.5 polarity neutral 0.5, C raw 8 normalized 0.8 polarity neutral 0.8. Second: A raw 8 normalized 0.8 polarity neutral 0.8, B raw 5 normalized 0.5 polarity neutral 0.5, C raw 2 normalized 0.2 polarity neutral 0.2. All values are listed."
  },
  "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"720\" height=\"520\" viewBox=\"0 0 720 520\" role=\"img\" class=\"sq-chart sq-chart--radar sq-family--relationship sq-theme--squillify sq-surface--light sq-density--standard\" data-sq-style-contract=\"CHART_STYLE@1\" data-sq-chart=\"radar\" data-sq-family=\"relationship\" 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-8af544f9cb23-title-0 sq-8af544f9cb23-desc-1\"><title id=\"sq-8af544f9cb23-title-0\">Radar chart with 2 profiles across 3 dimensions</title><desc id=\"sq-8af544f9cb23-desc-1\">Radar chart. 2 profiles across 3 caller-ordered dimensions; distinct domains and units; polygon area is not a score. First: A raw 2 normalized 0.2 polarity neutral 0.2, B raw 5 normalized 0.5 polarity neutral 0.5, C raw 8 normalized 0.8 polarity neutral 0.8. Second: A raw 8 normalized 0.8 polarity neutral 0.8, B raw 5 normalized 0.5 polarity neutral 0.5, C raw 2 normalized 0.2 polarity neutral 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-legend-label{fill:var(--sq-chart-text-primary);}.sq-chart .sq-legend-swatch[data-sq-palette-index=\"0\"]{fill:var(--sq-series-1);}.sq-chart .sq-legend-swatch[data-sq-palette-index=\"1\"]{fill:var(--sq-series-2);}</style><rect x=\"0\" y=\"0\" width=\"720\" height=\"520\" fill=\"#ffffff\" class=\"sq-background\" data-sq-role=\"background\"/><g class=\"sq-plot\" data-sq-role=\"plot\"><path d=\"M 282.5 222.8 L 314.716 278.6 L 250.284 278.6 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"0\"/><path d=\"M 282.5 185.6 L 346.932 297.2 L 218.068 297.2 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"1\"/><path d=\"M 282.5 148.4 L 379.148 315.8 L 185.852 315.8 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"2\"/><path d=\"M 282.5 111.2 L 411.365 334.4 L 153.635 334.4 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"3\"/><path d=\"M 282.5 74 L 443.581 353 L 121.419 353 Z\" fill=\"none\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-ring\" data-sq-role=\"radar-ring\" data-sq-point-index=\"4\"/><line x1=\"282.5\" y1=\"260\" x2=\"282.5\" y2=\"74\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-spoke\" data-sq-role=\"radar-spoke\" data-sq-point-index=\"0\"/><line x1=\"282.5\" y1=\"260\" x2=\"443.581\" y2=\"353\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-spoke\" data-sq-role=\"radar-spoke\" data-sq-point-index=\"1\"/><line x1=\"282.5\" y1=\"260\" x2=\"121.419\" y2=\"353\" stroke=\"#d8dee9\" stroke-width=\"1\" class=\"sq-radar-spoke\" data-sq-role=\"radar-spoke\" data-sq-point-index=\"2\"/><g class=\"sq-radar-profile-group\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-profile-141888c1c3a997d3\" data-sq-series-index=\"0\" data-sq-palette-index=\"0\"><path d=\"M 282.5 260 L 282.5 222.8 L 363.04 306.5 L 282.5 260 Z\" fill=\"#2563eb\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-e3e10b211f366072\" data-sq-series-index=\"0\" data-sq-point-index=\"0\" data-sq-palette-index=\"0\"/><path d=\"M 282.5 222.8 L 363.04 306.5 L 363.04 306.5 L 282.5 222.8 Z\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-ac3ff9838fcca7dc\" data-sq-series-index=\"0\" data-sq-point-index=\"0\" data-sq-palette-index=\"0\"/><path d=\"M 282.5 260 L 363.04 306.5 L 153.635 334.4 L 282.5 260 Z\" fill=\"#2563eb\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-2c97c80f1b624c99\" data-sq-series-index=\"0\" data-sq-point-index=\"1\" data-sq-palette-index=\"0\"/><path d=\"M 363.04 306.5 L 153.635 334.4 L 153.635 334.4 L 363.04 306.5 Z\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-7b6d8cd0c7c9d498\" data-sq-series-index=\"0\" data-sq-point-index=\"1\" data-sq-palette-index=\"0\"/><path d=\"M 282.5 260 L 153.635 334.4 L 282.5 222.8 L 282.5 260 Z\" fill=\"#2563eb\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-8d2a475c06774e58\" data-sq-series-index=\"0\" data-sq-point-index=\"2\" data-sq-palette-index=\"0\"/><path d=\"M 153.635 334.4 L 282.5 222.8 L 282.5 222.8 L 153.635 334.4 Z\" fill=\"none\" stroke=\"#2563eb\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-9f4dc5683c7c887d\" data-sq-series-index=\"0\" data-sq-point-index=\"2\" data-sq-palette-index=\"0\"/><path d=\"M 286 222.8 L 285.531 224.55 L 284.25 225.831 L 282.5 226.3 L 280.75 225.831 L 279.469 224.55 L 279 222.8 L 279.469 221.05 L 280.75 219.769 L 282.5 219.3 L 284.25 219.769 L 285.531 221.05 Z\" fill=\"#2563eb\" stroke=\"#2563eb\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-473ffc2951caf65b\" data-sq-series-index=\"0\" data-sq-point-index=\"0\" data-sq-palette-index=\"0\"/><path d=\"M 366.54 306.5 L 366.071 308.25 L 364.79 309.531 L 363.04 310 L 361.29 309.531 L 360.009 308.25 L 359.54 306.5 L 360.009 304.75 L 361.29 303.469 L 363.04 303 L 364.79 303.469 L 366.071 304.75 Z\" fill=\"#2563eb\" stroke=\"#2563eb\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-c1643e8211df4778\" data-sq-series-index=\"0\" data-sq-point-index=\"1\" data-sq-palette-index=\"0\"/><path d=\"M 157.135 334.4 L 156.667 336.15 L 155.385 337.431 L 153.635 337.9 L 151.885 337.431 L 150.604 336.15 L 150.135 334.4 L 150.604 332.65 L 151.885 331.369 L 153.635 330.9 L 155.385 331.369 L 156.667 332.65 Z\" fill=\"#2563eb\" stroke=\"#2563eb\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-2773c7fc60d16a5a\" data-sq-series-index=\"0\" data-sq-point-index=\"2\" data-sq-palette-index=\"0\"/></g><g class=\"sq-radar-profile-group\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-profile-6e6b44be2087b757\" data-sq-series-index=\"1\" data-sq-palette-index=\"1\"><path d=\"M 282.5 260 L 282.5 111.2 L 363.04 306.5 L 282.5 260 Z\" fill=\"#6d5ce7\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-e35316a8cfd065dc\" data-sq-series-index=\"1\" data-sq-point-index=\"0\" data-sq-palette-index=\"1\"/><path d=\"M 282.5 111.2 L 363.04 306.5 L 363.04 306.5 L 282.5 111.2 Z\" fill=\"none\" stroke=\"#6d5ce7\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-76b8a3cf573248ef\" data-sq-series-index=\"1\" data-sq-point-index=\"0\" data-sq-palette-index=\"1\"/><path d=\"M 282.5 260 L 363.04 306.5 L 250.284 278.6 L 282.5 260 Z\" fill=\"#6d5ce7\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-0aef65c4836bac6d\" data-sq-series-index=\"1\" data-sq-point-index=\"1\" data-sq-palette-index=\"1\"/><path d=\"M 363.04 306.5 L 250.284 278.6 L 250.284 278.6 L 363.04 306.5 Z\" fill=\"none\" stroke=\"#6d5ce7\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-7a744d59182c1da5\" data-sq-series-index=\"1\" data-sq-point-index=\"1\" data-sq-palette-index=\"1\"/><path d=\"M 282.5 260 L 250.284 278.6 L 282.5 111.2 L 282.5 260 Z\" fill=\"#6d5ce7\" fill-opacity=\"0.18\" class=\"sq-radar-fill\" data-sq-role=\"radar-fill\" data-sq-target-key=\"t-radar-fill-bfe6b99613cea83f\" data-sq-series-index=\"1\" data-sq-point-index=\"2\" data-sq-palette-index=\"1\"/><path d=\"M 250.284 278.6 L 282.5 111.2 L 282.5 111.2 L 250.284 278.6 Z\" fill=\"none\" stroke=\"#6d5ce7\" stroke-width=\"2.2\" class=\"sq-radar-profile\" data-sq-role=\"radar-profile\" data-sq-target-key=\"t-radar-segment-50d117fa63672dff\" data-sq-series-index=\"1\" data-sq-point-index=\"2\" data-sq-palette-index=\"1\"/><path d=\"M 286 111.2 L 285.531 112.95 L 284.25 114.231 L 282.5 114.7 L 280.75 114.231 L 279.469 112.95 L 279 111.2 L 279.469 109.45 L 280.75 108.169 L 282.5 107.7 L 284.25 108.169 L 285.531 109.45 Z\" fill=\"#6d5ce7\" stroke=\"#6d5ce7\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-cbea467505380cb3\" data-sq-series-index=\"1\" data-sq-point-index=\"0\" data-sq-palette-index=\"1\"/><path d=\"M 366.54 306.5 L 366.071 308.25 L 364.79 309.531 L 363.04 310 L 361.29 309.531 L 360.009 308.25 L 359.54 306.5 L 360.009 304.75 L 361.29 303.469 L 363.04 303 L 364.79 303.469 L 366.071 304.75 Z\" fill=\"#6d5ce7\" stroke=\"#6d5ce7\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-e494ad97bfd11383\" data-sq-series-index=\"1\" data-sq-point-index=\"1\" data-sq-palette-index=\"1\"/><path d=\"M 253.784 278.6 L 253.315 280.35 L 252.034 281.631 L 250.284 282.1 L 248.534 281.631 L 247.253 280.35 L 246.784 278.6 L 247.253 276.85 L 248.534 275.569 L 250.284 275.1 L 252.034 275.569 L 253.315 276.85 Z\" fill=\"#6d5ce7\" stroke=\"#6d5ce7\" stroke-width=\"1\" class=\"sq-radar-vertex\" data-sq-role=\"radar-vertex\" data-sq-target-key=\"t-radar-value-c56646e1d6edd8e9\" data-sq-series-index=\"1\" data-sq-point-index=\"2\" data-sq-palette-index=\"1\"/></g><text x=\"282.5\" y=\"59.5\" font-size=\"10\" text-anchor=\"middle\" textLength=\"6\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-radar-axis-label\" data-sq-role=\"radar-axis-label\" data-sq-point-index=\"0\">A</text><text x=\"459.169\" y=\"365.5\" font-size=\"10\" text-anchor=\"start\" textLength=\"6\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-radar-axis-label\" data-sq-role=\"radar-axis-label\" data-sq-point-index=\"1\">B</text><text x=\"105.831\" y=\"365.5\" font-size=\"10\" text-anchor=\"end\" textLength=\"6\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-radar-axis-label\" data-sq-role=\"radar-axis-label\" data-sq-point-index=\"2\">C</text><line x1=\"568\" y1=\"18\" x2=\"580\" y2=\"18\" stroke=\"#2563eb\" stroke-width=\"3\" class=\"sq-legend-swatch\" data-sq-role=\"legend-swatch\" data-sq-series-index=\"0\" data-sq-palette-index=\"0\"/><text x=\"586\" y=\"22\" font-size=\"10\" text-anchor=\"start\" textLength=\"30\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-legend-label\" data-sq-role=\"legend-label\" data-sq-series-index=\"0\">First</text><line x1=\"568\" y1=\"36\" x2=\"580\" y2=\"36\" stroke=\"#6d5ce7\" stroke-width=\"3\" class=\"sq-legend-swatch\" data-sq-role=\"legend-swatch\" data-sq-series-index=\"1\" data-sq-palette-index=\"1\"/><text x=\"586\" y=\"40\" font-size=\"10\" text-anchor=\"start\" textLength=\"36\" lengthAdjust=\"spacing\" fill=\"#101828\" class=\"sq-legend-label\" data-sq-role=\"legend-label\" data-sq-series-index=\"1\">Second</text></g></svg>",
  "referenceResults": [],
  "renderSummary": {
    "variation": "radar",
    "dimensionCount": 3,
    "profileCount": 2,
    "referenceCount": 0,
    "gridShape": "polygon",
    "direction": "clockwise",
    "areaIsScore": false
  },
  "viewBox": "0 0 720 520",
  "dimensionResults": [
    {
      "max": "10",
      "polarity": "neutral",
      "shortLabel": "",
      "min": "0",
      "id": "a",
      "label": "A",
      "inputIndex": 0,
      "unit": "",
      "angleDegrees": -90
    },
    {
      "max": "10",
      "polarity": "neutral",
      "shortLabel": "",
      "min": "0",
      "id": "b",
      "label": "B",
      "inputIndex": 1,
      "unit": "",
      "angleDegrees": 30
    },
    {
      "max": "10",
      "polarity": "neutral",
      "shortLabel": "",
      "min": "0",
      "id": "c",
      "label": "C",
      "inputIndex": 2,
      "unit": "",
      "angleDegrees": 150
    }
  ],
  "gridResult": {
    "startAngle": "top",
    "direction": "clockwise",
    "radiusPx": 186,
    "levels": 5,
    "shape": "polygon"
  },
  "width": 720,
  "transformationSummary": {
    "applied": false,
    "operations": [],
    "affectedCategoryCount": 0,
    "affectedPointCount": 0,
    "affectedLabelCount": 0
  },
  "height": 520,
  "profileResults": [
    {
      "targetKey": "t-radar-profile-141888c1c3a997d3",
      "id": "first",
      "label": "First",
      "meaning": "",
      "inputIndex": 0,
      "visibility": "visible",
      "reference": false,
      "normalizedValues": [
        "0.2",
        "0.5",
        "0.8"
      ],
      "rawValues": [
        "2",
        "5",
        "8"
      ]
    },
    {
      "targetKey": "t-radar-profile-6e6b44be2087b757",
      "id": "second",
      "label": "Second",
      "meaning": "",
      "inputIndex": 1,
      "visibility": "visible",
      "reference": false,
      "normalizedValues": [
        "0.8",
        "0.5",
        "0.2"
      ],
      "rawValues": [
        "8",
        "5",
        "2"
      ]
    }
  ]
}
  • Compare operating profiles
  • Show targets as reference profiles
  • Retain units, domains, and polarity

Avoid for

  • Ranking by polygon area
  • Many profiles or dimensions
  • Missing values

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.

Tags

svgchartmultivariateradarvisualizationprofile