Color mapping in Angular Maps component
27 Apr 202424 minutes to read
Color mapping is used to customize the shape colors based on the given values. It has three types.
- Range color mapping
- Equal color mapping
- Desaturation color mapping.
To add color mapping to the shapes of the Maps, bind the data source to the dataSource
property of layerSettings
and set the field name which contains the color value in the data source to the colorValuePath
property.
Types of color mapping
Range color mapping
Range color mapping applies the color to the shapes of the Maps which matches the numeric values in the data source within the given color mapping ranges. The from
and to
properties in the colorMapping
are used to specify the color mapping ranges in the Maps.
export let population_density = [
https://ej2.syncfusion.com/angular/documentation.
{
'code': 'AE',
'value': 90,
'name': 'United Arab Emirates',
'population': 8264070,
'density': 99
},
{
'code': 'GB',
'value': 257,
'name': 'United Kingdom',
'population': 62041708,
'density': 255
},
{
'code': 'US',
'value': 34,
'name': 'United States',
'population': 325020000,
'density': 33
}
...
];
Bind the population_density data to the dataSource
property of layerSettings
and set the colorValuePath
property of shapeSettings
as density. The range values can be set using the from
and to
properties of colorMapping
.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { MapsModule } from '@syncfusion/ej2-angular-maps'
import { Component, OnInit } from '@angular/core';
import { world_map } from './world-map';
import { Population_Density } from './data';
@Component({
imports: [
MapsModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-maps id='rn-container' >
<e-layers>
<e-layer [shapeData]= 'shapeData' [shapeDataPath] = 'shapeDataPath' [shapePropertyPath] ='shapePropertyPath' [shapeSettings] = 'shapeSettings' [dataSource] ='dataSource'></e-layer>
</e-layers>
</ejs-maps>`
})
export class AppComponent implements OnInit {
public shapeData?: object;
public shapeDataPath?: string;
public shapePropertyPath ?: string;
public dataSource ?: object[];
public shapeSettings?: object;
ngOnInit(): void {
this.shapeData = world_map;
this.shapeDataPath = 'name';
this.shapePropertyPath= 'name';
this.dataSource= Population_Density;
this.shapeSettings = {
colorValuePath: 'density',
fill: '#E5E5E5',
colorMapping: [
{
from: 0.00001, to: 100, color: 'rgb(153,174,214)'
},
{
from: 100, to: 200, color: 'rgb(115,143,199)'
},
{
from: 200, to: 300, color: 'rgb(77,112,184)'
},
{
from: 300, to: 500, color: 'rgb(38,82,168)'
},
{
from: 500, to: 19000, color: 'rgb(0,51,153)'
}
]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Equal color mapping
Equal color mapping applies the color to the shapes of the Maps when the value
property of colorMapping
matches with the values provided in the data source. The following example shows how to apply equal color mapping to the shapes with the data source unCountries which illustrates the permanent and non-permanent countries in the UN security council.
export let unCountries: object[] = [
{ Country: 'China', Membership: 'Permanent' },
{ Country: 'France', Membership: 'Permanent' },
{ Country: 'Russia', Membership: 'Permanent' },
{ Country: 'United Kingdom', Membership: 'Permanent' },
{ Country: 'United States', Membership: 'Permanent' },
{ Country: 'Bolivia', Membership: 'Non-Permanent' },
{ Country: 'Eq. Guinea', Membership: 'Non-Permanent' },
{ Country: 'Ethiopia', Membership: 'Non-Permanent' },
{ Country: "Côte d'Ivoire", Membership: 'Permanent' },
{ Country: 'Kazakhstan', Membership: 'Non-Permanent' },
{ Country: 'Kuwait', Membership: 'Non-Permanent' },
{ Country: 'Netherlands', Membership: 'Non-Permanent' },
{ Country: 'Peru', Membership: 'Non-Permanent' },
{ Country: 'Poland', Membership: 'Non-Permanent' },
{ Country: 'Sweden', Membership: 'Non-Permanent' },
];
Bind the unCountries data to the dataSource
property of layerSettings
and set the colorValuePath
property of shapeSettings
as Membership. Set the value
property in the colorMapping
property to Permanent and Non-Permanent in the different set of color mapping properties. If the corresponding value of the colorValuePath
property matches with the corresponding field name in the data source, then the given color will be applied.
[app.component.ts
]
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { MapsModule } from '@syncfusion/ej2-angular-maps'
import { Component, OnInit } from '@angular/core';
import { world_map } from './world-map';
import { unCountries } from './data';
@Component({
imports: [
MapsModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-maps id='rn-container'>
<e-layers>
<e-layer [shapeData]= 'shapeData' [shapeDataPath] = 'shapeDataPath' [shapePropertyPath] ='shapePropertyPath' [shapeSettings] = 'shapeSettings' [dataSource] ='dataSource'></e-layer>
</e-layers>
</ejs-maps>`
})
export class AppComponent implements OnInit {
public shapeData?: object;
public shapeDataPath?: string;
public shapePropertyPath ?: string;
public dataSource ?: object[];
public shapeSettings?: object;
ngOnInit(): void {
this.shapeData = world_map;
this.shapeDataPath = 'Country';
this.shapePropertyPath= 'name';
this.dataSource = unCountries;
this.shapeSettings = {
fill: '#E5E5E5',
colorMapping: [
{
value: 'Permanent',
color: '#C3E6ED'
},
{
color: '#F1931B',
value: 'Non-Permanent'
}
],
colorValuePath: 'Membership'
}
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Desaturation color mapping
Desaturation color mapping applies the color to the shapes of the Maps, similar to the range color mapping. The opacity will be applied in this color mapping based on the minOpacity
and maxOpacity
properties in the colorMapping
.
The following example shows how to apply desaturation color mapping to the shapes with the data source population_density that is available in the Range color mapping section.
Bind the population_density data to the dataSource
property of layerSettings
and set the colorValuePath
property of shapeSettings
as density. The range values can be set using the from
and to
properties of colorMapping
.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { MapsModule } from '@syncfusion/ej2-angular-maps'
import { Component, OnInit } from '@angular/core';
import { world_map } from './world-map';
import { Population_Density } from './data';
@Component({
imports: [
MapsModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-maps id='rn-container'>
<e-layers>
<e-layer [shapeData]= 'shapeData' [shapeDataPath] = 'shapeDataPath' [shapePropertyPath] ='shapePropertyPath' [shapeSettings] = 'shapeSettings' [dataSource] ='dataSource'></e-layer>
</e-layers>
</ejs-maps>`
})
export class AppComponent implements OnInit {
public shapeData?: object;
public shapeDataPath?: string;
public shapePropertyPath ?: string;
public dataSource ?: object[];
public shapeSettings?: object;
ngOnInit(): void {
this.shapeData = world_map;
this.shapeDataPath = 'name';
this.shapePropertyPath= 'name';
this.dataSource= Population_Density;
this.shapeSettings = {
colorValuePath: 'density',
fill: '#E5E5E5',
colorMapping: [
{
from: 0, to: 100, minOpacity: 0.4, maxOpacity: 1, color: 'rgb(153,174,214)'
},
{
from: 101, to: 200, minOpacity: 0.7, maxOpacity: 1, color: 'rgb(115,143,199)'
},
]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Multiple colors for a single shape
Multiple colors can be added to the color mapping which can be used as gradient effect to a specific shape based on the ranges in the data source. By using the color
property of colorMapping
, any number of colors can be set to the shapes as a gradient.
The following example demonstrates how to use multiple colors in color mapping with the data source population_density that is available in the Range color mapping section.
Bind the population_density data to the dataSource
property of layerSettings
and set the colorValuePath
property of shapeSettings
as density. The range values can be set using the from
and to
properties of colorMapping
.
[app.component.ts
]
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { MapsModule } from '@syncfusion/ej2-angular-maps'
import { Component, OnInit } from '@angular/core';
import { world_map } from './world-map';
import { Population_Density } from './data';
@Component({
imports: [
MapsModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-maps id='rn-container'>
<e-layers>
<e-layer [shapeData]= 'shapeData' [shapeDataPath] = 'shapeDataPath' [shapePropertyPath] ='shapePropertyPath' [shapeSettings] = 'shapeSettings' [dataSource] ='dataSource'></e-layer>
</e-layers>
</ejs-maps>`
})
export class AppComponent implements OnInit {
public shapeData?: object;
public shapeDataPath?: string;
public shapePropertyPath ?: string;
public dataSource ?: object[];
public shapeSettings?: object;
ngOnInit(): void {
this.shapeData = world_map;
this.shapeDataPath = 'name';
this.shapePropertyPath= 'name';
this.dataSource= Population_Density;
this.shapeSettings = {
colorValuePath: 'density',
fill: '#E5E5E5',
colorMapping: [
{
from: 0, to: 100, color: ['red', 'blue']
},
{
from: 101, to: 200, color: ['green','violet']
},
]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Color for items excluded from color mapping
Color mapping can be applied to the shapes in the Maps which does not match color mapping criteria such as range or equal values using the color
property of colorMapping
.
The following example shows how to set the color for items excluded from the color mapping with the data source population_density that is available in the Range color mapping section.
In the following example, color mapping is added for the ranges from 0 to 200. If there are any records in the data source that are outside of this range, the color mapping will not be applied. To apply the color for these excluded items, set the color
property alone in the colorMapping
.
[app.component.ts
]
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { MapsModule } from '@syncfusion/ej2-angular-maps'
import { Component, OnInit } from '@angular/core';
import { world_map } from './world-map';
import { Population_Density } from './data';
@Component({
imports: [
MapsModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-maps id='rn-container'>
<e-layers>
<e-layer [shapeData]= 'shapeData' [shapeDataPath] = 'shapeDataPath' [shapePropertyPath] ='shapePropertyPath' [shapeSettings] = 'shapeSettings' [dataSource] ='dataSource'></e-layer>
</e-layers>
</ejs-maps>`
})
export class AppComponent implements OnInit {
public shapeData?: object;
public shapeDataPath?: string;
public shapePropertyPath ?: string;
public dataSource ?: object[];
public shapeSettings?: object;
ngOnInit(): void {
this.shapeData = world_map;
this.shapeDataPath = 'name';
this.shapePropertyPath= 'name';
this.dataSource= Population_Density;
this.shapeSettings = {
colorValuePath: 'density',
fill: '#E5E5E5',
colorMapping: [
{
from: 0, to: 100, color: 'red'
},
{
from: 101, to: 200, color: 'green'
},
{
color: 'violet'
}
]
};
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));
Color mapping for bubbles
The color mapping types such as range color mapping, equal color mapping and desaturation color mapping are applicable for bubbles in the Maps. To add color mapping for bubbles of the Maps, bind the data source to the dataSource
property of bubbleSettings
and set the field name which contains the color value in the data source to the colorValuePath
property. Multiple colors for a single set of bubbles and color for excluded items from colorMapping
are also applicable for bubbles.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { MapsModule } from '@syncfusion/ej2-angular-maps'
import { BubbleService } from '@syncfusion/ej2-angular-maps'
import { Component, OnInit } from '@angular/core';
import { world_map } from './world-map';
@Component({
imports: [
MapsModule
],
providers: [BubbleService],
standalone: true,
selector: 'app-container',
template:
`<ejs-maps id='rn-container'>
<e-layers>
<e-layer [shapeData]= 'shapeData' [shapeDataPath]='shapeDataPath' [shapePropertyPath]='shapePropertyPath' [bubbleSettings] = 'bubbleSettings'></e-layer>
</e-layers>
</ejs-maps>`
})
export class AppComponent implements OnInit {
public shapeData?: object;
public shapeDataPath?: object | any;
public shapePropertyPath?: object | any;
public bubbleSettings?: object;
ngOnInit(): void {
this.shapeData = world_map;
this.shapeDataPath = 'name';
this.shapePropertyPath = 'name';
this.bubbleSettings = [{
visible: true,
minRadius: 5,
dataSource: [
{ name: 'India', population: '38332521' },
{ name: 'New Zealand', population: '19651127' },
{ name: 'Pakistan', population: '3090416' }
],
valuePath: 'population',
colorValuePath: 'population',
colorMapping: [{
value: '38332521',
color: '#C3E6ED'
},
{
value: '19651127',
color: '#F1931B'
},
{
value: '3090416',
color: 'blue'}
]
}]
}
}
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));