Multiple panes in React 3D Chart control
10 Jan 202424 minutes to read
The chart area can be divided into multiple panes using rows
and columns
.
Rows
To split the chart area vertically into number of rows, use rows
property of the 3D chart.
- The space for each row can be allocated by using the
height
property. The value can be either in percentage or in pixel. - To associate a vertical axis to a particular row, specify its index to
rowIndex
property of the axis.
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DRowDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DRowsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, labelFormat: '{value}°F', title: 'Temperature (Fahrenheit)', interval: 20 };
return <Chart3DComponent id='charts' style= primaryXAxis=
primaryYAxis={yAxis} wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DRowsDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
</Chart3DRowsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective rowIndex={1} name='yAxis1' opposedPosition={true} title='Temperature (Celsius)' labelFormat='{value}°C' minimum={24} maximum={36} interval={2} majorGridLines=></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' yAxisName="yAxis1">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DRowDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DRowsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, labelFormat: '{value}°F', title: 'Temperature (Fahrenheit)', interval: 20 };
return <Chart3DComponent id='charts' style= primaryXAxis=
primaryYAxis={yAxis} wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DRowsDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
</Chart3DRowsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective rowIndex={1} name='yAxis1' opposedPosition={true} title='Temperature (Celsius)' labelFormat='{value}°C' minimum={24} maximum={36} interval={2} majorGridLines=></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' yAxisName="yAxis1">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
For spanning the vertical axis along multiple rows, use span
property of an axis.
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DRowDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DRowsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, interval: 20,
title: 'Temperature (Fahrenheit)',
labelFormat: '{value}°F',
span: 2 };
return <Chart3DComponent id='charts' style= primaryXAxis=
primaryYAxis={yAxis} wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DRowsDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
</Chart3DRowsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective rowIndex={1} name='yAxis1' opposedPosition={true} title='Temperature (Celsius)' labelFormat='{value}°C' minimum={24} maximum={36} interval={2} majorGridLines=></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' yAxisName="yAxis1">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DRowDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DRowsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, interval: 20,
title: 'Temperature (Fahrenheit)',
labelFormat: '{value}°F',
span: 2 };
return <Chart3DComponent id='charts' style= primaryXAxis=
primaryYAxis={yAxis} wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DRowsDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
<Chart3DRowDirective height="50%"></Chart3DRowDirective>
</Chart3DRowsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective rowIndex={1} name='yAxis1' opposedPosition={true} title='Temperature (Celsius)' labelFormat='{value}°C' minimum={24} maximum={36} interval={2} majorGridLines=></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' yAxisName="yAxis1">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
Columns
To split the chart area horizontally into number of columns, use columns
property of the 3D chart.
- The space for each column can be allocated by using the
width
property. The given width can be either in percentage or in pixel. - To associate a horizontal axis to a particular column, specify its index to
columnIndex
property of the axis.
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DColumnDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DColumnsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, interval: 20,
title: 'Temperature (Fahrenheit)',
labelFormat: '{value}°F' };
return <Chart3DComponent id='charts' primaryXAxis=
primaryYAxis={yAxis}
wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DColumnsDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
</Chart3DColumnsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective columnIndex={1} name='xAxis' valueType="Category"></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' xAxisName="xAxis">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DColumnDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DColumnsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, interval: 20,
title: 'Temperature (Fahrenheit)',
labelFormat: '{value}°F' };
return <Chart3DComponent id='charts' primaryXAxis=
primaryYAxis={yAxis}
wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DColumnsDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
</Chart3DColumnsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective columnIndex={1} name='xAxis' valueType="Category"></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' xAxisName="xAxis">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
For spanning the vertical axis along multiple column, you can use span
property of an axis.
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DColumnDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DColumnsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, interval: 20,
title: 'Temperature (Fahrenheit)',
labelFormat: '{value}°F' };
return <Chart3DComponent id='charts' primaryXAxis=
primaryYAxis={yAxis}
wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DColumnsDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
</Chart3DColumnsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective columnIndex={1} name='xAxis' valueType="Category"></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' xAxisName="xAxis">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));
import { Chart3DComponent, Chart3DSeriesCollectionDirective, Chart3DSeriesDirective, Category3D, Chart3DColumnDirective, Chart3DAxisDirective, Chart3DAxesDirective, Chart3DColumnsDirective, Inject, Legend3D, DataLabel3D, Tooltip3D, ColumnSeries3D, Highlight3D } from '@syncfusion/ej2-react-charts';
import * as React from "react";
import * as ReactDOM from "react-dom";
function App() {
const data = [
{ x: 'Jan', y: 15, y1: 33 }, { x: 'Feb', y: 20, y1: 31 }, { x: 'Mar', y: 35, y1: 30 },
{ x: 'Apr', y: 40, y1: 28 }, { x: 'May', y: 80, y1: 29 }, { x: 'Jun', y: 70, y1: 30 },
{ x: 'Jul', y: 65, y1: 33 }, { x: 'Aug', y: 55, y1: 32 }, { x: 'Sep', y: 50, y1: 34 },
{ x: 'Oct', y: 30, y1: 32 }, { x: 'Nov', y: 35, y1: 32 }, { x: 'Dec', y: 35, y1: 31 }
];
const yAxis = { minimum: 0, maximum: 90, interval: 20,
title: 'Temperature (Fahrenheit)',
labelFormat: '{value}°F' };
return <Chart3DComponent id='charts' primaryXAxis=
primaryYAxis={yAxis}
wallColor='transparent'
enableRotation={true} rotation={7} tilt={10} depth={100}>
<Inject services={[ColumnSeries3D, Category3D, Legend3D, Tooltip3D, DataLabel3D, Highlight3D]} />
<Chart3DColumnsDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
<Chart3DColumnDirective width="50%"></Chart3DColumnDirective>
</Chart3DColumnsDirective>
<Chart3DAxesDirective>
<Chart3DAxisDirective columnIndex={1} name='xAxis' valueType="Category"></Chart3DAxisDirective>
</Chart3DAxesDirective>
<Chart3DSeriesCollectionDirective >
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y' type='Column'>
</Chart3DSeriesDirective>
<Chart3DSeriesDirective dataSource={data} xName='x' yName='y1' type='Column' xAxisName="xAxis">
</Chart3DSeriesDirective>
</Chart3DSeriesCollectionDirective>
</Chart3DComponent>;
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));