Skip to content

Charts

@revolist/charts renders interactive charts in an ordinary HTML container. It includes 68 built-in chart types, themes, selection, navigation and exports. Use it with JavaScript or your preferred framework, independently of Pivot, RevoGrid and Pro. No grid stylesheet or custom element registration is required.

GuideWhat you will learn
InstallationPackage access, installation, imports and your first chart.
Framework componentsReact, Vue, Angular and Svelte components with reactive configuration.
AnalysisMoving averages, regression, period comparisons, forecasts, computed references and comparison charts.
Data & ConfigurationRow mapping, analytical datasets, bindings, styling, updates, selection, exports and cleanup.

Switch between line and column charts, load forecast data, select points and download CSV or SVG. These two chart types share one controller and your data.

Loading chart…

Choose any of the 68 built-in chart types or the three optional geographic examples. Each example uses a valid dataset for its requirements. For native charts, open View sample dataset and bindings to inspect the input, including specialized channels or distributions. Geographic examples link to their complete provider and rendering code. The catalog includes all renderers; your application can import just one type instead.

Show change and trends across an ordered axis.

Loading chart…

Independent import: @revolist/charts/line

View sample dataset and bindings
{
  "dataset": {
    "revision": 0,
    "source": "client",
    "categories": [
      {
        "id": "preview-category-0",
        "label": "Jan",
        "path": [
          "Jan"
        ],
        "labels": [
          "Jan"
        ],
        "depth": 1,
        "kind": "leaf"
      },
      {
        "id": "preview-category-1",
        "label": "Feb",
        "path": [
          "Feb"
        ],
        "labels": [
          "Feb"
        ],
        "depth": 1,
        "kind": "leaf"
      },
      {
        "id": "preview-category-2",
        "label": "Mar",
        "path": [
          "Mar"
        ],
        "labels": [
          "Mar"
        ],
        "depth": 1,
        "kind": "leaf"
      },
      {
        "id": "preview-category-3",
        "label": "Apr",
        "path": [
          "Apr"
        ],
        "labels": [
          "Apr"
        ],
        "depth": 1,
        "kind": "leaf"
      }
    ],
    "series": [
      {
        "id": "preview-series-0",
        "label": "Current",
        "columnPath": [
          "Current"
        ],
        "labels": [
          "Current"
        ],
        "kind": "leaf",
        "prop": "preview-0"
      },
      {
        "id": "preview-series-1",
        "label": "Previous",
        "columnPath": [
          "Previous"
        ],
        "labels": [
          "Previous"
        ],
        "kind": "leaf",
        "prop": "preview-1"
      }
    ],
    "values": [
      [
        18,
        29
      ],
      [
        44,
        27
      ],
      [
        31,
        45
      ],
      [
        62,
        50
      ]
    ],
    "analyticalFrame": {
      "fields": [
        {
          "id": "pivot:category",
          "label": "pivot:category",
          "role": "dimension",
          "semanticType": "category"
        },
        {
          "id": "pivot:series",
          "label": "pivot:series",
          "role": "dimension",
          "semanticType": "category"
        },
        {
          "id": "preview-series-0",
          "label": "Current",
          "role": "measure",
          "semanticType": "number",
          "sourceField": "preview-0"
        },
        {
          "id": "preview-series-1",
          "label": "Previous",
          "role": "measure",
          "semanticType": "number",
          "sourceField": "preview-1"
        }
      ],
      "observations": [
        {
          "id": "[\"preview-category-0\",\"preview-series-0\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Jan",
              "label": "Jan",
              "path": [
                "Jan"
              ],
              "labels": [
                "Jan"
              ]
            },
            "pivot:series": {
              "value": "Current",
              "label": "Current",
              "path": [
                "Current"
              ],
              "labels": [
                "Current"
              ]
            }
          },
          "measures": {
            "preview-series-0": 18
          }
        },
        {
          "id": "[\"preview-category-0\",\"preview-series-1\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Jan",
              "label": "Jan",
              "path": [
                "Jan"
              ],
              "labels": [
                "Jan"
              ]
            },
            "pivot:series": {
              "value": "Previous",
              "label": "Previous",
              "path": [
                "Previous"
              ],
              "labels": [
                "Previous"
              ]
            }
          },
          "measures": {
            "preview-series-1": 29
          }
        },
        {
          "id": "[\"preview-category-1\",\"preview-series-0\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Feb",
              "label": "Feb",
              "path": [
                "Feb"
              ],
              "labels": [
                "Feb"
              ]
            },
            "pivot:series": {
              "value": "Current",
              "label": "Current",
              "path": [
                "Current"
              ],
              "labels": [
                "Current"
              ]
            }
          },
          "measures": {
            "preview-series-0": 44
          }
        },
        {
          "id": "[\"preview-category-1\",\"preview-series-1\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Feb",
              "label": "Feb",
              "path": [
                "Feb"
              ],
              "labels": [
                "Feb"
              ]
            },
            "pivot:series": {
              "value": "Previous",
              "label": "Previous",
              "path": [
                "Previous"
              ],
              "labels": [
                "Previous"
              ]
            }
          },
          "measures": {
            "preview-series-1": 27
          }
        },
        {
          "id": "[\"preview-category-2\",\"preview-series-0\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Mar",
              "label": "Mar",
              "path": [
                "Mar"
              ],
              "labels": [
                "Mar"
              ]
            },
            "pivot:series": {
              "value": "Current",
              "label": "Current",
              "path": [
                "Current"
              ],
              "labels": [
                "Current"
              ]
            }
          },
          "measures": {
            "preview-series-0": 31
          }
        },
        {
          "id": "[\"preview-category-2\",\"preview-series-1\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Mar",
              "label": "Mar",
              "path": [
                "Mar"
              ],
              "labels": [
                "Mar"
              ]
            },
            "pivot:series": {
              "value": "Previous",
              "label": "Previous",
              "path": [
                "Previous"
              ],
              "labels": [
                "Previous"
              ]
            }
          },
          "measures": {
            "preview-series-1": 45
          }
        },
        {
          "id": "[\"preview-category-3\",\"preview-series-0\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Apr",
              "label": "Apr",
              "path": [
                "Apr"
              ],
              "labels": [
                "Apr"
              ]
            },
            "pivot:series": {
              "value": "Current",
              "label": "Current",
              "path": [
                "Current"
              ],
              "labels": [
                "Current"
              ]
            }
          },
          "measures": {
            "preview-series-0": 62
          }
        },
        {
          "id": "[\"preview-category-3\",\"preview-series-1\"]",
          "dimensions": {
            "pivot:category": {
              "value": "Apr",
              "label": "Apr",
              "path": [
                "Apr"
              ],
              "labels": [
                "Apr"
              ]
            },
            "pivot:series": {
              "value": "Previous",
              "label": "Previous",
              "path": [
                "Previous"
              ],
              "labels": [
                "Previous"
              ]
            }
          },
          "measures": {
            "preview-series-1": 50
          }
        }
      ],
      "matrixCells": [
        {
          "categoryId": "preview-category-0",
          "seriesId": "preview-series-0",
          "observationId": "[\"preview-category-0\",\"preview-series-0\"]",
          "measureFieldId": "preview-series-0"
        },
        {
          "categoryId": "preview-category-0",
          "seriesId": "preview-series-1",
          "observationId": "[\"preview-category-0\",\"preview-series-1\"]",
          "measureFieldId": "preview-series-1"
        },
        {
          "categoryId": "preview-category-1",
          "seriesId": "preview-series-0",
          "observationId": "[\"preview-category-1\",\"preview-series-0\"]",
          "measureFieldId": "preview-series-0"
        },
        {
          "categoryId": "preview-category-1",
          "seriesId": "preview-series-1",
          "observationId": "[\"preview-category-1\",\"preview-series-1\"]",
          "measureFieldId": "preview-series-1"
        },
        {
          "categoryId": "preview-category-2",
          "seriesId": "preview-series-0",
          "observationId": "[\"preview-category-2\",\"preview-series-0\"]",
          "measureFieldId": "preview-series-0"
        },
        {
          "categoryId": "preview-category-2",
          "seriesId": "preview-series-1",
          "observationId": "[\"preview-category-2\",\"preview-series-1\"]",
          "measureFieldId": "preview-series-1"
        },
        {
          "categoryId": "preview-category-3",
          "seriesId": "preview-series-0",
          "observationId": "[\"preview-category-3\",\"preview-series-0\"]",
          "measureFieldId": "preview-series-0"
        },
        {
          "categoryId": "preview-category-3",
          "seriesId": "preview-series-1",
          "observationId": "[\"preview-category-3\",\"preview-series-1\"]",
          "measureFieldId": "preview-series-1"
        }
      ]
    }
  },
  "bindings": {}
}

Explore the shared chart tools: drawing and annotations, navigation, interaction, linking, exports and configuration. Each tool has its own guide and a live example. These tools belong to Charts; Pivot adds its query, grid filtering and editor integration.

The catalog below is generated from the package’s chart definitions. Each row links to a dedicated guide with a live interactive example, interpretation notes, data requirements, supported options and a complete example. It also lists the independent import subpath. For example, /line means @revolist/charts/line, which exports lineChart and createLineChart.

Column charts

ChartWhen to use itImport subpath
Grouped columnCompare values side by side across categories./grouped-column
Stacked columnCompare totals and their contributing series./stacked-column
100% stacked columnCompare percentage composition across categories./normalized-column
Range columnCompare lower-to-upper intervals as vertical columns./range-column
LollipopCompare single values with compact stems and endpoints./lollipop

Bar charts

ChartWhen to use itImport subpath
Grouped barCompare categories with horizontal bars./grouped-bar
Stacked barCompare horizontal totals and their composition./stacked-bar
100% stacked barCompare percentage composition horizontally./normalized-bar
Range barCompare lower-to-upper intervals as horizontal bars./range-bar

Line charts

ChartWhen to use itImport subpath
LineShow change and trends across an ordered axis./line
Smooth lineShow trends with a smooth curve through each value./smooth-line
Stepped lineShow values that remain constant between categories./stepped-line
Small multiplesCompare series in aligned panels with independent scales./small-multiples
Annotated time seriesHighlight notable points along an ordered time trend./annotated-time-series

Area charts

ChartWhen to use itImport subpath
AreaEmphasize the magnitude of change over an ordered axis./area
Stepped areaEmphasize stepwise changes with a filled baseline./stepped-area
Stacked areaShow how multiple series contribute to a changing total./stacked-area
100% stacked areaShow percentage contribution over an ordered axis./normalized-area
Range areaShow how a lower-to-upper interval changes over categories./range-area
Confidence bandShow an uncertainty band between lower and upper bounds./confidence-band

Part-to-whole charts

ChartWhen to use itImport subpath
PieShow the share of a single series as slices./pie
DonutShow part-to-whole values in one or more rings./donut
Semi-donutShow part-to-whole values across a compact semicircle./semi-donut
WaffleCompare part-to-whole values on a compact 100-cell grid./waffle

Hierarchies

ChartWhen to use itImport subpath
TreemapCompare hierarchical values as proportional nested tiles./treemap
SunburstExplore the current hierarchy level as proportional radial sectors./sunburst
IcicleExplore hierarchy through proportional stacked rectangles./icicle
Circle packingExplore hierarchy through proportional nested circles./circle-packing
Organization chartShow connected parent and child cards./organization

Relationships

ChartWhen to use itImport subpath
ScatterCompare two measures as points across categories./scatter
BubbleCompare two measures while bubble area represents a third measure./bubble
Density scatterAggregate dense X/Y observations into spatial density./density-scatter
Connected scatterShow the ordered path between paired X/Y observations./connected-scatter
Quadrant chartCompare observations across four decision regions./quadrant

Combination charts

ChartWhen to use itImport subpath
Column and lineCompare one column series with one or more line series./column-line
Area and lineCompare one filled area series with one or more line series./area-line

Statistics and intervals

ChartWhen to use itImport subpath
Error intervalCompare a center value with its lower and upper bounds./error-interval
Box plotSummarize a distribution with quartiles, whiskers, and outliers./box-plot
Violin plotCompare distribution shape and concentration across categories./violin
Range and intervalCompare minimum, maximum, and mean values by category./range-interval

Time and faceting

ChartWhen to use itImport subpath
WaterfallShow how positive and negative changes build to a result./waterfall
Timeline rangeCompare start-to-end intervals across categories./timeline-range

KPIs and progress

ChartWhen to use itImport subpath
BulletCompare actual values with explicit targets./bullet
GaugeCompare an actual value with its target on a radial scale./gauge
KPI valueSummarize actual, target, and variance in a compact KPI card./kpi
Progress gaugeShow progress toward a target on a radial track./progress-gauge
Linear gaugeCompare a value with an explicit linear scale and target./linear-gauge

Polar and radar charts

ChartWhen to use itImport subpath
RoseCompare category magnitude through radial sector length./rose
Radar lineCompare multiple series across circular category axes./radar-line
Radar areaCompare filled multivariate profiles across circular axes./radar-area
Polar columnCompare grouped values as radial columns./polar-column
Stacked polar columnCompare radial totals and their contributing series./stacked-polar-column
100% stacked polar columnCompare percentage composition in radial columns./normalized-polar-column
Radial barShow one series as progress around radial tracks./radial-bar
Multi-ring radial barCompare multiple series as concentric radial tracks./multi-ring-radial-bar
Radial columnCompare rectangular columns arranged around a polar axis./radial-column

Distributions

ChartWhen to use itImport subpath
HistogramSummarize one measure in deterministic numeric bins./histogram
Strip and dot plotShow the distribution of individual values along one axis./strip-dot

Heatmaps

ChartWhen to use itImport subpath
HeatmapCompare category and series intersections through color intensity./heatmap
Calendar heatmapShow one daily measure across calendar weeks./calendar-heatmap

Processes

ChartWhen to use itImport subpath
FunnelShow sequential stages that narrow toward an outcome./funnel
PyramidCompare staged values through centered proportional layers./pyramid
Cone funnelCompare stage lines and the transitions between them./cone-funnel

Flows

ChartWhen to use itImport subpath
SankeyTrace weighted flow from categories to connected series./sankey
ChordCompare weighted relationships through circular ribbons./chord

Financial charts

ChartWhen to use itImport subpath
CandlestickCompare open, high, low, and close values over time./candlestick
OHLCShow open, high, low, and close values with compact ticks./ohlc
Volume and priceCompare price movement with trading volume./volume-price
  • Use columns, bars and lollipops for category comparisons; stacked variants show totals, while 100% stacked variants show proportions.
  • Use lines and areas for ordered trends; combination charts compare series with different mark styles.
  • Use scatter, bubble and density charts for numeric relationships. Map the required X, Y and optional size channels explicitly.
  • Use hierarchy metadata for treemap, sunburst, icicle and circle packing.
  • Use observations or distribution summaries for box plots and violins; use explicit bounds for ranges and intervals.
  • Use financial channels for OHLC and volume-price charts, and actual/target bindings for KPI and progress charts.

The library preserves explicit numeric values and nulls. It does not silently aggregate repeated category keys or infer missing observations. See Data & Configuration for conversion rules.

Three geographic types are available through @revolist/charts/geographic. They are capability packs with application-supplied providers and assets, and are separate from the native catalog above:

TypePurposeRequired application input
ChoroplethCompare values through filled geographic regions.Region geometry and values.
Proportional symbol mapCompare geographic values through sized symbols.Coordinates, values and symbol sizes.
Geographic heatmapShow spatial concentration through a heat layer.Geographic heat points and values.

ECharts and vector PDF are optional integrations rather than additional chart families. See Installation.

Standalone Charts owns visualization and local interaction. For grouped grid results, queries, linked refreshes, drill-down or filter synchronization, use Pivot Charts, which consumes the same chart engine.