Custom labels text
RadChartView allows you to easily change the axes labels text by using a custom format provider class. This class must implement the IFormatProvider and ICustomFormatter interfaces. The key point in this class is that the Format method is called for each label and its "arg" parameter contains the current label text. The returned value will represent the new label.
Example 1: Changing the labels' texts to more human readable ones
Label Format
public class MyFormatProvider : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
return this;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
string s = arg.ToString();
switch (s)
{
case "0":
return "0 seconds";
case "30":
return "1/2 min";
case "60":
return "1 min";
case "90":
return "90 seconds";
}
return null;
}
}
Class MyFormatProvider
Implements IFormatProvider
Implements ICustomFormatter
Public Function GetFormat(formatType As Type) As Object Implements IFormatProvider.GetFormat
Return Me
End Function
Public Function Format(format__1 As String, arg As Object, formatProvider As IFormatProvider) As String Implements ICustomFormatter.Format
Dim s As String = arg.ToString()
Select Case s
Case "0"
Return "0 seconds"
Case "30"
Return "1/2 min"
Case "60"
Return "1 min"
Case "90"
Return "90 seconds"
End Select
Return Nothing
End Function
End Class
Then you can just change the horizontal axis LabelFormatProvider by using the corresponding property.
Assign Format Provider
LinearAxis horizontalAxis = radChartView1.Axes.Get<LinearAxis>(0);
horizontalAxis.LabelFormatProvider = new MyFormatProvider();
Dim horizontalAxis As LinearAxis = RadChartView1.Axes.[Get](Of LinearAxis)(0)
horizontalAxis.LabelFormatProvider = New MyFormatProvider()
Example 2: Showing the date part of a label only on day changes
DateTime Format Provider
public class DateTimeFormatProvider : IFormatProvider, ICustomFormatter
{
public object GetFormat(Type formatType)
{
return this;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
DateTime val = (DateTime)arg;
if (val.Hour == 0)
{
return val.ToShortDateString();
}
else
{
return val.ToString("H\\h");
}
}
}
Class DateTimeFormatProvider
Implements IFormatProvider
Implements ICustomFormatter
Public Function GetFormat(formatType As Type) As Object Implements IFormatProvider.GetFormat
Return Me
End Function
Public Function Format(format__1 As String, arg As Object, formatProvider As IFormatProvider) As String Implements ICustomFormatter.Format
Dim val As DateTime = DirectCast(arg, DateTime)
If val.Hour = 0 Then
Return val.ToShortDateString()
Else
Return val.ToString("H\h")
End If
End Function
End Class
Again you can just change the horizontal axis LabelFormatProvider by using the corresponding property.
Assign DateTime Format Provider
DateTimeContinuousAxis dateTimeAxis = new DateTimeContinuousAxis();
dateTimeAxis.LabelFormatProvider = new DateTimeFormatProvider();
Dim dateTimeAxis As New DateTimeContinuousAxis()
dateTimeAxis.LabelFormatProvider = New DateTimeFormatProvider()
The above provider implementation is applicable only to axes working with DateTime objects ( DateTimeContinuousAxis and DateTimeCategoricalAxis ).