Points customization in EJ2 TypeScript Chart control

8 May 20237 minutes to read

You can customize the series points with patterns by using the pointColorMapping property.

To customize the series point colors, follow the given steps:

Step 1:

Define the patterns and map the pattern URL to the series point using pointColorMapping property in series.

import { Chart, ColumnSeries, Category, DataLabel, Tooltip } from '@syncfusion/ej2-charts';
Chart.Inject(ColumnSeries, DataLabel, Category, Tooltip);
import { EmitType } from '@syncfusion/ej2-base';

    let chart: Chart = new Chart({
        //Initializing Primary X Axis
        primaryXAxis: {
            valueType: 'Category',
        },
        //Initializing Primary Y Axis
        primaryYAxis:
        {
            minimum: 0, maximum: 250, interval: 50
        },

        //Initializing Chart Series
        series: [
            {
                type: 'Column', xName: 'x', width: 2, yName: 'y', pointColorMapping: 'color',
                dataSource: [
                    { x: 'BGD', y: 106, text: 'Bangaladesh', color:  'url(#chess)' },
                    { x: 'BTN', y: 103, text: 'Bhutn',  color:  'url(#cross)' },
                    { x: 'NPL', y: 198, text: 'Nepal',  color: 'url(#circle)' },
                    { x: 'THA', y: 189, text: 'Thiland',  color:  'url(#rectangle)' },
                    { x: 'MYS', y: 230, text: 'Malaysia',  color: 'url(#line)' }
                ], name: 'Tiger',
                cornerRadius: {
                    bottomLeft: 10, bottomRight: 10, topLeft: 10, topRight: 10
                }
            }
        ],
        legendSettings: { visible: false },
        //Initializing Chart title
        title: 'Tiger Population - 2016',
    width:'650px',
    height: '300px'
    },'#element');
<!DOCTYPE html>
<html lang="en">

<head>
	<title>EJ2 Animation</title>
	<meta charset="utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
	<meta name="description" content="Typescript UI Controls" />
	<meta name="author" content="Syncfusion" />
	<link href="index.css" rel="stylesheet" />
	<script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.19.38/system.js"></script>
	<script src="systemjs.config.js"></script>
<script src="https://cdn.syncfusion.com/ej2/syncfusion-helper.js" type ="text/javascript"></script>
</head>

<body>
	<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg" version="1.1">
		<defs>
			<pattern id="chess" x="0" y="0" patternUnits='userSpaceOnUse' width="20" height="20">
				<rect width='20' height='20' fill='#fff' />
				<rect width='10' height='10' fill='#ed7d31' />
				<rect x='10' y='10' width='10' height='10' fill='#ed7d31' />
			</pattern>
			<pattern id="cross" x="0" y="0" patternUnits='userSpaceOnUse' width="8" height="8">
				<rect width='8' height='8' fill='#4472c4' />
				<path d='M0 0L8 8ZM8 0L0 8Z' stroke-width='1' stroke='white' />
			</pattern>
			<pattern id="circle" x="0" y="0" patternUnits='userSpaceOnUse' width="9" height="9">
				<rect fill="#FFFFFF" width="9" height="9" />
				<circle fill="#f7ce69" cx="5.125" cy="3.875" r="3.625" />
			</pattern>
			<pattern id="rectangle" x="0" y="0" patternUnits='userSpaceOnUse' width="12" height="12">
				<rect fill="#FFFFFF" width="12" height="11" />
				<rect x="1" y="2" fill="#404041" width="4" height="9" />
				<rect x="7" y="2" fill="#404041" width="4" height="9" />
			</pattern>
			<pattern id="line" x="0" y="0" patternUnits='userSpaceOnUse' width="12" height="12">
				<line fill="none" stroke="#7ddf1e" stroke-miterlimit="10" x1="0" y1="1.5" x2="10" y2="1.5" />
				<line fill="none" stroke="#7ddf1e" stroke-miterlimit="10" x1="0" y1="5.5" x2="10" y2="5.5" />
				<line fill="none" stroke="#7ddf1e" stroke-miterlimit="10" x1="0" y1="9.5" x2="10" y2="9.5" />
			</pattern>
		</defs>
	</svg>
	<div id='loader'>Loading....</div>
	<div id='container'>
		<div id='element' style="height: 300px"></div>
	</div>
</body>

</html>