Category axis in React Chart component
20 Jan 202314 minutes to read
Category axis are used to represent, the string values instead of numbers.
To get start quickly with React Category Axis, you can check out this video:
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, ColumnSeries, Legend, Category } from '@syncfusion/ej2-react-charts';
import { chartData } from 'datasource.ts';
function App() {
const primaryxAxis = { valueType: 'Category', title: 'Countries' };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} title='Olympic Medals'>
<Inject services={[ColumnSeries, Legend, Category]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={chartData} xName='country' yName='gold' type='Column'>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import * as React from "react";
import * as ReactDOM from "react-dom";
import { AxisModel,ChartComponent, SeriesCollectionDirective, AxesDirective, AxisDirective, SeriesDirective, Inject, ColumnSeries, Legend, Category} from'@syncfusion/ej2-react-charts';
import { chartData } from 'datasource.ts';
function App() {
const primaryxAxis: AxisModel = { valueType: 'Category', title: 'Countries' };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis}
title='Olympic Medals'>
<Inject services={[ColumnSeries, Legend, Category]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={chartData} xName='country' yName='gold' type='Column'>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
Note: To use category axis, we need to inject
Category
module into theservices
and
set thevalueType
of axis to Category.
Labels Placement
By default, category labels are placed between the ticks in an axis, this can also be placed on ticks using labelPlacement
property.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, ColumnSeries, Legend, Category } from '@syncfusion/ej2-react-charts';
import { chartData } from 'datasource.ts';
function App() {
const primaryxAxis = { valueType: 'Category', title: 'Countries', labelPlacement: 'OnTicks' };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} title='Olympic Medals'>
<Inject services={[ColumnSeries, Legend, Category]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={chartData} xName='country' yName='gold' type='Column'>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import * as React from "react";
import * as ReactDOM from "react-dom";
import { AxisModel,ChartComponent, SeriesCollectionDirective, AxesDirective, AxisDirective, SeriesDirective, Inject, ColumnSeries, Legend, Category} from'@syncfusion/ej2-react-charts';
import { chartData } from 'datasource.ts';
function App() {
const primaryxAxis: AxisModel = { valueType: 'Category', title: 'Countries', labelPlacement: 'OnTicks' };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis}
title='Olympic Medals' >
<Inject services={[ColumnSeries, Legend, Category]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={chartData} xName='country' yName='gold' type='Column'>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
Range
Range of the category axis can be customized using minimum
, maximum
and interval
property of the axis.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, ColumnSeries, Legend, Category } from '@syncfusion/ej2-react-charts';
import { chartData } from 'datasource.ts';
function App() {
const primaryxAxis = { valueType: 'Category', title: 'Countries', interval: 2, minimum: 1, maximum: 5 };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} title='Olympic Medals'>
<Inject services={[ColumnSeries, Legend, Category]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={chartData} xName='country' yName='gold' type='Column'>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, AxesDirective, AxisDirective, SeriesDirective, Inject,ColumnSeries, Legend, Category} from'@syncfusion/ej2-react-charts';
import { chartData } from 'datasource.ts';
function App() {
const primaryxAxis: AxisModel = { valueType: 'Category', title: 'Countries', interval: 2, minimum: 1, maximum: 5 };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis}
title='Olympic Medals' >
<Inject services={[ColumnSeries, Legend, Category]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={chartData} xName='country' yName='gold' type='Column'>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
Indexed category axis
Category axis also can be rendered based on the index values of data source. This can be achieved by defining the isIndexed
property to true
in the axis.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { Category, ChartComponent, ColumnSeries, Inject, Legend, SeriesCollectionDirective, SeriesDirective } from '@syncfusion/ej2-react-charts';
function App() {
const data1 = [{ x: 'Myanmar', y: 7.3 }, { x: 'India', y: 7.9 },
{ x: 'Bangladesh', y: 6.8 }, { x: 'Cambodia', y: 7.0 }, { x: 'China', y: 6.9 }];
const data2 = [{ x: 'Poland', y: 2.7 }, { x: 'Australia', y: 2.5 },
{ x: 'Singapore', y: 2.0 }, { x: 'Canada', y: 1.4 }, { x: 'Germany', y: 1.8 }];
const primaryxAxis = { valueType: 'Category', isIndexed: true };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis}>
<Inject services={[ColumnSeries, Legend, Category]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={data1} xName='x' yName='y' type='Column'/>
<SeriesDirective dataSource={data1} xName='x' yName='y' type='Column'/>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import * as React from "react";
import * as ReactDOM from "react-dom";
import { AxisModel,Category,ChartComponent,ColumnSeries,Inject,Legend, SeriesCollectionDirective, SeriesDirective } from'@syncfusion/ej2-react-charts';
function App() {
const data1: any[] = [{ x: 'Myanmar', y: 7.3 }, { x: 'India', y: 7.9 },
{ x: 'Bangladesh', y: 6.8 }, { x: 'Cambodia', y: 7.0 }, { x: 'China', y: 6.9 }];
const data2: any[] = [{ x: 'Poland', y: 2.7 },{ x: 'Australia', y: 2.5 },
{ x: 'Singapore', y: 2.0 },{ x: 'Canada', y: 1.4 },{ x: 'Germany', y: 1.8 }];
const primaryxAxis: AxisModel= { valueType: 'Category', isIndexed: true } ;
return <ChartComponent id='charts'
primaryXAxis={ primaryxAxis }>
<Inject services={[ColumnSeries, Legend, Category]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource ={data1} xName='x' yName='y' type='Column'/>
<SeriesDirective dataSource ={data1} xName='x' yName='y' type='Column'/>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));