React Charts | Get Started with ag-Charts and React

ag-Charts is an exciting new addition to the ag-Grid family, offering both integrated as well as standalone fully functional charting capabilities.

Quick Look Code Example
import React, { Component } from 'react'; import { AgChartsReact } from 'ag-charts-react'; export default class ChartExample extends Component { data = [ { beverage: 'Coffee', Q1: 450, Q2: 560, Q3: 600, Q4: 700, }, { beverage: 'Tea', Q1: 270, Q2: 380, Q3: 450, Q4: 520, }, { beverage: 'Milk', Q1: 180, Q2: 170, Q3: 190, Q4: 200, }, ]; constructor(props) { super(props); this.state = { options: { data: this.data, title: { text: 'Beverage Expenses' }, subtitle: { text: 'per quarter' }, padding: { top: 40, right: 40, bottom: 40, left: 40, }, series: [ { type: 'column', xKey: 'beverage', yKeys: ['Q1', 'Q2', 'Q3', 'Q4'], }, ], legend: { spacing: 40 }, }, }; } render() { return <AgChartsReact options={this.state.options} />; } }
<div id="root"></div>

Getting Started

In this article we will walk you through the necessary steps to add ag-Charts to an existing React project and produce your first charts.

Add ag-Charts to Your Project

For the purposes of this tutorial, we are going to scaffold a React app with create-react-app.

Don't worry if your project has a different configuration - ag-Charts and the React wrapper are distributed as NPM packages, which should work with any common React project module bundler setup.

Let's follow the create-react-app instructions and run the following commands in your terminal:

npx create-react-app my-app cd my-app npm start
npx comes with npm 5.2+ and higher, for older npm versions use these instructions

If everything goes well, npm start has started the web server and conveniently opened a browser pointing to localhost:3000.

As a next step, let's add the ag-Charts NPM packages. Run the following command in my-app (you may need a new instance of the terminal):

npm install --save ag-charts-community ag-charts-react

After a few seconds of waiting, you should be good to go. Let's get to the actual coding! Open src/App.js in your favourite text editor and change its contents to the following:

import React, { Component } from 'react'; import { AgChartsReact } from 'ag-charts-react'; export default class ChartExample extends Component { data = [ { quarter: 'Q1', spending: 450, }, { quarter: 'Q2', spending: 560, }, { quarter: 'Q3', spending: 600, }, { quarter: 'Q4', spending: 700, }, ]; constructor(props) { super(props); this.state = { options: { data: this.data, series: [{ xKey: 'quarter', yKey: 'spending', }], }, }; } render() { return <AgChartsReact options={this.state.options} />; } }

Here we'll provide the options we want to use for our chart, including the series to use to plot the data.

The series type defaults to 'line' so the only series configuration we need to specify is to tell the series which keys to use to fetch the data to be plotted along the horizontal (x) and vertical (y) axes.

The series property is an array because it is possible to supply multiple series (including mixed kinds!) into a single chart.

The default axes configuration is a category axis on the bottom and number axis on the left of a chart, both of which are exactly what we need, so we don't need to supply these here.

The chart also features a legend by default which shows the yKey the series is using, in our case 'spending'.

With all this in place we should now see:

Line Chart

Customising the Legend

If we don't want the legend to show the value of the yKey itself we can give it a name, for example 'Coffee Spending'.

This name is more descriptive but also longer, so let's position the legend on the bottom of the chart to make more space for the series:

constructor(props) { super(props); this.state = { options: { data: this.data, series: [{ xKey: 'quarter', yKey: 'spending', + yName: 'Coffee Spending', }], + legend: { + position: 'bottom', + }, } } }
Line Chart

Basic Column Chart

Now let's try something more interesting. Let us say you want to visualize how much is spent on coffee, milk and tea in your company each quarter and in total. Your data might look something like this:

data = [ { beverage: 'Coffee', Q1: 450, Q2: 560, Q3: 600, Q4: 700, }, { beverage: 'Tea', Q1: 270, Q2: 380, Q3: 450, Q4: 520, }, { beverage: 'Milk', Q1: 180, Q2: 170, Q3: 190, Q4: 200, }, ];

This time, let's choose another series type to plot the data: stacked columns. Here's the chart configuration we can use to do that:

constructor(props) { super(props); this.state = { options: { data: this.data, series: [{ type: 'column', xKey: 'beverage', yKeys: ['Q1', 'Q2', 'Q3', 'Q4'], }], } } }

Unlike 'line' series charts, 'column' series can have multiple yKeys which allow for stacking, in our case one block per quarter.

Chart tooltips are enabled by default so you can hover over a block to see its value.

Column Chart

Labels and Titles

We can enhance our chart by providing a label for each block segment. We can set a label's fontSize, fontFamily and other properties, but for now we'll just accept the default values:

constructor(props) { super(props); this.state = { options: { data: this.data, series: [{ type: 'column', xKey: 'beverage', yKeys: ['Q1', 'Q2', 'Q3', 'Q4'], + label: {}, }], } } }
Column Chart

If we then want to add a title and subtitle to the chart, we can simply add this to our chart config:

constructor(props) { super(props); this.state = { options: { data: this.data, + title: { + text: 'Beverage Expenses', + }, + subtitle: { + text: 'per quarter', + }, series: [{ type: 'column', xKey: 'beverage', yKeys: ['Q1', 'Q2', 'Q3', 'Q4'], label: {}, }], } } }
Column Chart

Now that you've had a taste of what it's like to use ag-Charts, we encourage you to explore our documentation to learn more.

Next Up

Continue to the next section to see the API Reference.