title | page_title | description | tags | position | previous_url | slug |
---|---|---|---|---|---|---|
Annotations |
.NET MAUI Chart Documentation - Annotations |
Check our "Annotations" documentation article for Telerik Chart for .NET MAUI. |
.net maui, chart, ui for .net maui |
7 |
/controls/chart/chart-annotations |
chart-annotations |
Annotations are visual elements that are used to highlight areas on the plot. They can be displayed as comments or as markers for specific values on the plot. You can use any visual element as a template for the annotation.
The Chart supports the following types of annotations:
CartesianGridLineAnnotation
—This annotation is visually represented by straight lines across the chart that mark specific values on the associated Cartesian axis.CartesianPlotBandAnnotation
—This annotation is visually represented by a band across the chart that marks a specific range on the associated Cartesian axis.
The CartesianGridLineAnnotation
represents a vertical or horizontal line that crosses the entire plot area and provides the following features:
Axis
—TheCartesianGridLineAnnotation
has to be explicitly associated with a horizontal or a vertical cartesian axis.Value
—The place on the associated axis where a line crosses it.
note When the associated axis is numerical, the
CartesianGridLineAnnotation
expects a numeric value. When the associated axis is a Categorical Axis, theCartesianGridLineAnnotation
expects a category.
The following example shows how the CartesianGridLineAnnotation
works:
1. Create the needed business objects:
2. Create a ViewModel
:
public class ViewModel
{
public ObservableCollection<CategoricalData> Data { get; set; }
public double Threshold { get; set; }
public ViewModel()
{
this.Data = GetCategoricalData();
this.Threshold = this.Data.Average(data => data.Value);
}
private static ObservableCollection<CategoricalData> GetCategoricalData()
{
var data = new ObservableCollection<CategoricalData>
{
new CategoricalData { Category = "Greenings", Value = 21 },
new CategoricalData { Category = "Perfecto", Value = 18 },
new CategoricalData { Category = "NearBy", Value = 44 },
new CategoricalData { Category = "Family", Value = 77 },
new CategoricalData { Category = "Fresh", Value = 34 },
};
return data;
}
}
3. Declare the RadChart
in XAML:
<telerik:RadCartesianChart>
<telerik:RadCartesianChart.BindingContext>
<local:ViewModel />
</telerik:RadCartesianChart.BindingContext>
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:CategoricalAxis LabelFitMode="MultiLine" />
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:NumericalAxis x:Name="verticalAxis" />
</telerik:RadCartesianChart.VerticalAxis>
<telerik:RadCartesianChart.Series>
<telerik:BarSeries ValueBinding="Value"
CategoryBinding="Category"
ItemsSource="{Binding Data}" />
</telerik:RadCartesianChart.Series>
<telerik:RadCartesianChart.Annotations>
<telerik:CartesianGridLineAnnotation Stroke="#0E72F6"
StrokeThickness="2"
Axis="{x:Reference verticalAxis}"
Value="{Binding Threshold}">
<telerik:CartesianGridLineAnnotation.DashArray>
<x:Array Type="{x:Type x:Double}">
<x:Double>4.0</x:Double>
<x:Double>2.0</x:Double>
</x:Array>
</telerik:CartesianGridLineAnnotation.DashArray>
</telerik:CartesianGridLineAnnotation>
</telerik:RadCartesianChart.Annotations>
</telerik:RadCartesianChart>
The following image shows how the CartesianGridLineAnnotation
looks:
The CartesianPlotBandAnnotation
represents a vertical or horizontal area that crosses the entire plot area and provides the following features:
Axis
—TheCartesianPlotBandAnnotation
needs to be explicitly associated with a horizontal or a vertical axis.From
—The starting value for the plot band.To
—The ending value for the plot band.Fill
—Gets or sets the Fill.
The following example shows how the CartesianPlotBandAnnotation
works:
1. Create the needed business objects:
2. Define the ViewModel
:
public class ViewModel
{
public ObservableCollection<CategoricalData> Data { get; set; }
public double StartThreshold { get; private set; }
public double EndThreshold { get; private set; }
public ViewModel()
{
this.Data = GetCategoricalData();
var threshold = this.Data.Average(data => data.Value);
this.StartThreshold = threshold * 0.9;
this.EndThreshold = threshold * 1.1;
}
private static ObservableCollection<CategoricalData> GetCategoricalData()
{
var data = new ObservableCollection<CategoricalData>
{
new CategoricalData { Category = "Greenings", Value = 66 },
new CategoricalData { Category = "Perfecto", Value = 19 },
new CategoricalData { Category = "NearBy", Value = 92 },
new CategoricalData { Category = "Family", Value = 23 },
new CategoricalData { Category = "Fresh", Value = 56 },
};
return data;
}
}
3. Declare the RadChart
control in XAML:
<telerik:RadCartesianChart>
<telerik:RadCartesianChart.BindingContext>
<local:ViewModel />
</telerik:RadCartesianChart.BindingContext>
<telerik:RadCartesianChart.HorizontalAxis>
<telerik:CategoricalAxis LabelFitMode="MultiLine"
PlotMode="OnTicks" />
</telerik:RadCartesianChart.HorizontalAxis>
<telerik:RadCartesianChart.VerticalAxis>
<telerik:NumericalAxis x:Name="verticalAxis" />
</telerik:RadCartesianChart.VerticalAxis>
<telerik:RadCartesianChart.Series>
<telerik:LineSeries ValueBinding="Value"
CategoryBinding="Category"
ItemsSource="{Binding Data}" />
</telerik:RadCartesianChart.Series>
<telerik:RadCartesianChart.Annotations>
<telerik:CartesianPlotBandAnnotation StrokeThickness="2"
Stroke="Green"
Fill="#2F66FF33"
Axis="{x:Reference verticalAxis}"
From="{Binding StartThreshold}"
To="{Binding EndThreshold}" />
</telerik:RadCartesianChart.Annotations>
</telerik:RadCartesianChart>
The following image shows how the CartesianPlotBandAnnotation
looks:
- [CartesianChart Grid]({%slug cartesian-chart-grid%})
- [Chart Legend]({%slug chart-features-legend%})
- [Chart Null Values]({%slug chart-nullvalues%})