Gauge axes in Angular Circular gauge component
27 Apr 202424 minutes to read
By default, gauge will be displayed with an axis.
Each axis contains its own ranges, pointers and annotation.
Axis Customization
You can customize the width and color of an axis line by using lineStyle property. Background for an axis can be customized by using background property.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [lineStyle]="lineStyle" background="#b2d8d8"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public lineStyle?: Object;
ngOnInit(): void {
// Initialize objects
this.lineStyle= {
width: 2,
color: 'red'
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Angles and Direction
Circular gauge axis can sweep from 0 to 360 degrees. By default start angle of an axis is 200 degree and end angle is 160 degree and you can customize this option by using startAngle and endAngle property.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis startAngle= 270 endAngle=90></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
ngOnInit(): void {
// Initialize objects
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));The direction property enables you to render the gauge axis either in ClockWise or in AntiClockWise direction.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis direction="AntiClockWise"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
ngOnInit(): void {
// Initialize objects
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Axis Radius
By default, radius of an axis is calculated based on the available size. You can customize this, by using radius property.
It takes value either in percentage or in pixel.
In Pixel
You can set the radius of the gauge in pixel as demonstrated below,
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis radius="150"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
ngOnInit(): void {
// Initialize objects
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));In Percentage
By setting value in percentage, gauge gets its dimension with respect to its available size.
For example, when the radius is ‘50%’, gauge renders to half of the available size.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis radius="50%"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
ngOnInit(): void {
// Initialize objects
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Ticks
You can customize the height, color and width of major and minor ticks by using majorTicks and minorTicks property.
By default, interval for majorTicks will be calculated automatically and also you can customize the interval for major and minor ticks using interval property.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [majorTicks]="majorTicks" [minorTicks]="minorTicks"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public majorTicks?: Object;
public minorTicks?: Object;
ngOnInit(): void {
// Initialize objects
this.majorTicks= {
interval: 10,
color:'red',
height: 10,
width: 3
};
this.minorTicks= {
interval: 5,
color:'green',
height: 5,
width: 2
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Tick Position
Both minor and major ticks can be moved by using offset and position property. The offset defines the distance between the axis and ticks. By default, offset value is 0. The position will place the ticks either inside or outside of the axis.
By default, ticks will be placed inside the axis.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [majorTicks]="majorTicks" [minorTicks]="minorTicks"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public majorTicks?: Object;
public minorTicks?: Object;
ngOnInit(): void {
// Initialize objects
this.majorTicks= {
interval: 10,
color:'red',
height: 10,
width: 3,
position: 'Inside',
offset: 5
};
this.minorTicks= {
interval: 5,
color:'green',
height: 5,
width: 2,
position: 'Inside',
offset: 5
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Labels
Labels of an axis can be customized by using font property in labelStyle options.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [labelStyle]="labelStyle"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public labelStyle?: Object;
ngOnInit(): void {
// Initialize objects
this.labelStyle= {
font: {
color: 'red',
size: '20px',
fontWeight: 'Bold'
}
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Label Position
Labels can be moved by using offset or position property.
The offset defines the distance between the labels and ticks.
By default, offset value is 0.
The position will place the labels either inside or outside of the axis.
By default, labels will be placed inside the axis.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [labelStyle]="labelStyle"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public labelStyle?: Object;
ngOnInit(): void {
// Initialize objects
this.labelStyle= {
position: 'Outside',
offset: 5
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Auto Angle
Labels can be swept along the axis angle by enabling autoAngle property.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [labelStyle]="labelStyle"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public labelStyle?: Object;
ngOnInit(): void {
// Initialize objects
this.labelStyle= {
autoAngle: true
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Smart Labels
When an axis makes a complete circle, then the first and last label of the axis will get overlap with each other.
In this scenario, you can either hide 1st or last label using hiddenLabel property.
When hiddenLabel value is First, then the 1st label will be hidden and when the hiddenLabel value is ‘Last’, then the last label will be hidden.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis minimum=0 maximum=12 startAngle=0 endAngle=360 [majorTicks]="majorTicks" [minorTicks]="minorTicks" [labelStyle]="labelStyle"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public majorTicks?: Object;
public minorTicks?: Object;
public labelStyle?: Object;
ngOnInit(): void {
// Initialize objects
this.majorTicks= {
interval: 1,
position: 'Inside',
height: 10
};
this.minorTicks= {
interval: 0.2,
position: 'Inside',
height: 5
};
this.labelStyle= {
position: 'Inside',
hiddenLabel: 'First'
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Label Format
Axis labels can be formatted by using format property in labelStyle and its supports all globalize format.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [labelStyle]="labelStyle"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public labelStyle?: Object;
ngOnInit(): void {
// Initialize objects
this.labelStyle= {
format: 'p1'
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));The following table describes the result of applying some commonly used label formats on numeric values.
| Label Value | Label Format property value | Result | Description |
| 1000 | n1 | 1000.0 | The Number is rounded to 1 decimal place |
| 1000 | n2 | 1000.00 | The Number is rounded to 2 decimal place |
| 1000 | n3 | 1000.000 | The Number is rounded to 3 decimal place |
| 0.01 | p1 | 1.0% | The Number is converted to percentage with 1 decimal place |
| 0.01 | p2 | 1.00% | The Number is converted to percentage with 2 decimal place |
| 0.01 | p3 | 1.000% | The Number is converted to percentage with 3 decimal place |
| 1000 | c1 | $1,000.0 | The Currency symbol is appended to number and number is rounded to 1 decimal place |
| 1000 | c2 | $1,000.00 | The Currency symbol is appended to number and number is rounded to 2 decimal place |
Custom Label Format
Axis labels support custom label format using placeholder like {value}°C, in which the value represent the axis label e.g 20°C.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [labelStyle]="labelStyle"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public labelStyle?: Object;
ngOnInit(): void {
// Initialize objects
this.labelStyle= {
format: '{value}°C'
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Hide intersecting axis labels
When the axis labels overlap with each other, you can hide the intersected labels by setting the hideIntersectingLabel property to true in the axis.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis minimum=0 maximum=200 startAngle=270 endAngle=90 hideIntersectingLabel=true [majorTicks]="majorTicks" [minorTicks]="minorTicks"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public minorTicks?: Object;
public majorTicks?: Object;
ngOnInit(): void {
// Initialize objects
this.majorTicks= {
interval: 4,
};
this.minorTicks= {
interval: 2,
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Minimum and Maximum
The minimum and maximum properties enables you to customize the start and end values of an axis.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis minimum=50 maximum=250></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
ngOnInit(): void {
// Initialize objects
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));Multiple Axes
In addition to the default axis, you can add n number of axis to a gauge.
Each axis will have its own ranges, pointers, annotations and customization options.
import { NgModule } from '@angular/core'
import { BrowserModule } from '@angular/platform-browser'
import { CircularGaugeModule } from '@syncfusion/ej2-angular-circulargauge'
import { Component, OnInit } from '@angular/core';
@Component({
imports: [
CircularGaugeModule
],
standalone: true,
selector: 'app-container',
template:
`<ejs-circulargauge id="circular-container">
<e-axes>
<e-axis [pointers]="pointers" [majorTicks]="majorTicks" [minorTicks]="minorTicks"></e-axis>
<e-axis [pointers]="pointers" [majorTicks]="majorTicks1" [minorTicks]="minorTicks1"></e-axis>
</e-axes>
</ejs-circulargauge>`
})
export class AppComponent implements OnInit {
public majorTicks?: Object;
public minorTicks?: Object;
public majorTicks1?: Object;
public minorTicks1?: Object;
public pointers?: Object;
ngOnInit(): void {
// Initialize objects
this.pointers = [];
this.majorTicks= {
interval: 10,
height: 10
};
this.minorTicks= {
interval: 5,
height: 5
};
this.majorTicks1= {
interval: 10,
height: 10
};
this.minorTicks1= {
interval: 5,
height: 5
};
}
}import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import 'zone.js';
bootstrapApplication(AppComponent).catch((err) => console.error(err));