Trend lines in React Chart
25 Aug 202624 minutes to read
Trendlines help identify patterns, direction, and overall trends in numerical data. They project the general movement of data values and are widely used in analytics, forecasting, and financial charts. Trendlines can be added to Cartesian series types such as Line, Column, Scatter, Area, Candle, and Hilo (excluding bar series). Multiple trendlines can be added to a single series based on the analysis needs.
The React Chart component supports six types of trendlines:
- Linear - A straight, best-fit line for data with a constant rate of change.
- Exponential - A curved line for data that rises or falls at increasingly higher rates (requires positive y-values).
- Logarithmic - A best-fit curved line for data whose rate of change quickly levels out (supports positive and negative values).
-
Polynomial - A curved line that models fluctuating data; degree is controlled by
polynomialOrder. - Power - A curved line for datasets where measurements increase at a specific rate (requires positive y-values).
-
Moving Average - A smoothed trendline that uses the
periodproperty to control the window size.
Linear
A linear trendline is a straight, best-fit line used to describe data with a constant rate of change. Set the trendline type to Linear and inject the Trendlines module using <Inject services={[Trendlines]} />.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme
,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Exponential
An exponential trendline is a curved line that is most useful when data values rise or fall at increasingly higher rates. Exponential trendlines cannot be generated if the dataset contains zero or negative y-values.
Set the trendline type to Exponential and inject the Trendlines module using <Inject services={[Trendlines]} />.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Exponential' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme
,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Exponential' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Logarithmic
A logarithmic trendline is a best-fit curved line that is most useful when the rate of change in the data increases or decreases quickly and then levels out. A logarithmic trendline can use positive and/or negative values.
Set type to Logarithmic and inject the Trendlines module using <Inject services={[Trendlines]} />.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Logarithmic' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme
,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Logarithmic' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Polynomial
A polynomial trendline is a curved line that is used when data fluctuates.
Set type to Polynomial and inject the Trendlines module using <Inject services={[Trendlines]} />. Use polynomialOrder to define the degree of the polynomial. Recommended values are 2 to 6; higher orders risk overfitting and may render slowly on large datasets.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Polynomial' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme
,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Polynomial' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Power
A power trendline is a curved line that is best used with data sets that compare measurements that increase at a specific rate. Power trendlines cannot be generated if the dataset contains zero or negative y-values.
Set type to Power and inject the Trendlines module using <Inject services={[Trendlines]} />.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
import { powerData } from './datasource';
function App() {
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 50,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={powerData} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Power' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme
,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
import { powerData } from './datasource';
function App() {
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 50,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={powerData} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Power' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));export let powerData = [
{ x: 1, y: 10 }, { x: 2, y: 50 },
{ x: 3, y: 80 }, { x: 4, y: 110 },
{ x: 5, y: 180 }, { x: 6, y: 220 },
{ x: 7, y: 300 }, { x: 8, y: 370 },
{ x: 9, y: 490 }, { x: 10, y: 500 }
];export let powerData: Object[] = [
{ x: 1, y: 10 }, { x: 2, y: 50 },
{ x: 3, y: 80 }, { x: 4, y: 110 },
{ x: 5, y: 180 }, { x: 6, y: 220 },
{ x: 7, y: 300 }, { x: 8, y: 370 },
{ x: 9, y: 490 }, { x: 10, y: 500 }
];Moving Average
A moving average trendline smooths fluctuations in data to show a pattern or trend more clearly. The period property specifies the number of data points used to calculate each average. Choose a period that is at least 2 and less than the total number of data points; the first period - 1 points will not have a moving-average value rendered.
Set type to MovingAverage and inject the Trendlines module using <Inject services={[Trendlines]} />.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='MovingAverage' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme
,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='MovingAverage' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Customization of Trendline
Customize the trendline appearance using the fill property for color and the width property for line thickness. Use dashArray to render the trendline as a dashed line.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' fill='red' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' fill='red' width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Forecasting
Trendline forecasting extends the existing trendline to estimate future and past values. Forecasting is supported for all six trendline types: Linear, Exponential, Logarithmic, Polynomial, Power, and Moving Average. Specify a positive integer for either property to forecast that many data points beyond the chart’s actual data range.
Forward Forecasting
Use the forwardForecast property to extend the trendline into the future.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' backwardForecast={5} width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' backwardForecast={5} width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Backward Forecasting
Use the backwardForecast property to extend the trendline into past data points.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' backwardForecast={5} width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' backwardForecast={5} width={3} marker={marker}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));Multiple Trendlines
Multiple trendlines can be added to a single series to compare different fits. Pass an array of trendline objects to the trendlines property of the series. Each trendline must specify a unique name so it can be identified in the legend.
```jsx
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, LineSeries, Trendlines } from '@syncfusion/ej2-react-charts';
import * as React from 'react';
const data = [
{ x: 1, y: 10 },
{ x: 2, y: 18 },
{ x: 3, y: 15 },
{ x: 4, y: 25 },
{ x: 5, y: 30 },
{ x: 6, y: 28 }
];
export default class App extends React.Component {
render() {
return (
<ChartComponent id="charts" primaryXAxis=>
<Inject services={[LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={data} xName="x" yName="y" type="Line"
trendlines={[
{ type: 'Linear', name: 'Linear Trend', fill: '#0066CC', width: 2 },
{ type: 'Exponential', name: 'Exponential Trend', fill: '#CC0000', width: 2 },
{ type: 'MovingAverage', name: 'Moving Average', period: 3, fill: '#009933', width: 2 }
]}>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
);
}
}
``````tsx
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, Inject, LineSeries, Trendlines } from '@syncfusion/ej2-react-charts';
import * as React from 'react';
const data: Object[] = [
{ x: 1, y: 10 },
{ x: 2, y: 18 },
{ x: 3, y: 15 },
{ x: 4, y: 25 },
{ x: 5, y: 30 },
{ x: 6, y: 28 }
];
export default class App extends React.Component<{}, {}> {
render() {
return (
<ChartComponent id="charts" primaryXAxis=>
<Inject services={[LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={data} xName="x" yName="y" type="Line"
trendlines={[
{ type: 'Linear', name: 'Linear Trend', fill: '#0066CC', width: 2 },
{ type: 'Exponential', name: 'Exponential Trend', fill: '#CC0000', width: 2 },
{ type: 'MovingAverage', name: 'Moving Average', period: 3, fill: '#009933', width: 2 }
]}>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
);
}
}
```General Properties
The following properties apply to all trendline types.
Name
Use the name property to assign a descriptive name to a trendline. The name is displayed in the chart legend and used to identify the trendline in tooltips. When multiple trendlines are added, a unique name is required for each.
Marker
Customize trendline data points using the marker property. You can configure the shape, size, fill, and border of the markers.
Tooltip
Use enableTooltip (default true) to control whether the trendline displays a tooltip on hover.
Animation
Trendline rendering supports animation through the animation property. See the AnimationModel API for general configuration options.
Legend Shape
Use legendShape to customize the shape that represents the trendline in the legend.
Intercept
Use intercept to specify a fixed intercept value for the trendline equation.
Show or hide a trendline
Control the visibility of a trendline by setting the visible property to true or false. When set to false, the trendline is hidden from the chart but its legend entry is also removed.
import * as React from "react";
import * as ReactDOM from "react-dom";
import { ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject, Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category } from '@syncfusion/ej2-react-charts';
function App() {
const series1 = [];
const yValue = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad() {
let i;
let j = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip = { enable: true };
const chartarea = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts' primaryXAxis={primaryxAxis} primaryYAxis={primaryyAxis} tooltip={tooltip} chartArea={chartarea} title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]}/>
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' visible={false}>
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>;
}
;
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));import * as React from "react";
import * as ReactDOM from "react-dom";
import { Browser } from '@syncfusion/ej2-base';
import {
ChartComponent, SeriesCollectionDirective, SeriesDirective, TrendlineDirective, TrendlinesDirective, Inject,
Tooltip, LineSeries, ScatterSeries, SplineSeries, Trendlines, Category, ChartTheme
,AxisModel,TooltipSettingsModel,ChartAreaModel
} from '@syncfusion/ej2-react-charts';
import { DropDownListComponent } from '@syncfusion/ej2-react-dropdowns';
import { NumericTextBoxComponent } from '@syncfusion/ej2-react-inputs';
import { SampleBase } from '../common/sample-base';
import { PropertyPane } from '../common/property-pane';
import { EmitType } from '@syncfusion/ej2-base';
function App() {
const series1: Object[] = [];
const yValue: number[] = [7.66, 8.03, 8.41, 8.97, 8.77, 8.20, 8.16, 7.89, 8.68, 9.48, 10.11, 11.36, 12.34, 12.60, 12.95,
13.91, 16.21, 17.50, 22.72, 28.14, 31.26, 31.39, 32.43, 35.52, 36.36,
41.33, 43.12, 45.00, 47.23, 48.62, 46.60, 45.28, 44.01, 45.17, 41.20, 43.41, 48.32, 45.65, 46.61, 53.34, 58.53];
function chartLoad(): void {
let i: number;
let j: number = 0;
for (i = 1973; i <= 2013; i++) {
series1.push({ x: i, y: yValue[j] });
j++;
}
}
const primaryxAxis: AxisModel = { title: 'Months', majorGridLines: { width: 0 } };
const primaryyAxis: AxisModel = {
title: 'Rupees against Dollars', interval: 10,
lineStyle: { width: 0 }, majorTickLines: { width: 0 }
};
const tooltip: TooltipSettingsModel = { enable: true };
const chartarea: ChartAreaModel = { border: { width: 0 } };
const marker = { visible: false };
chartLoad();
return <ChartComponent id='charts'
primaryXAxis={primaryxAxis}
primaryYAxis={primaryyAxis}
tooltip={tooltip}
chartArea={chartarea}
title='Historical Indian Rupee Rate (INR USD)'>
<Inject services={[Category, Tooltip, ScatterSeries, SplineSeries, LineSeries, Trendlines]} />
<SeriesCollectionDirective>
<SeriesDirective dataSource={series1} xName='x' yName='y' name='Apple Inc' type='Scatter' fill='#0066FF'>
<TrendlinesDirective>
<TrendlineDirective type='Linear' visible={false} >
</TrendlineDirective>
</TrendlinesDirective>
</SeriesDirective>
</SeriesCollectionDirective>
</ChartComponent>
};
export default App;
ReactDOM.render(<App />, document.getElementById("charts"));