Back to Devexpress

ManualDateTimeScaleOptions.AggregateFunction Property

wpf-devexpress-dot-xpf-dot-charts-dot-manualdatetimescaleoptions-419b2a17.md

latest9.9 KB
Original Source

ManualDateTimeScaleOptions.AggregateFunction Property

Gets or sets the function that is used to aggregate date-time axis data when one of the AxisX2D.DateTimeScaleOptions, AxisX3D.DateTimeScaleOptions, or RadarAxisX2D.DateTimeScaleOptions properties is set to ManualDateTimeScaleOptions.

Namespace : DevExpress.Xpf.Charts

Assembly : DevExpress.Xpf.Charts.v25.2.dll

NuGet Package : DevExpress.Wpf.Charts

Declaration

csharp
public AggregateFunction AggregateFunction { get; set; }
vb
Public Property AggregateFunction As AggregateFunction

Property Value

TypeDescription
AggregateFunction

An AggregateFunction enumeration value.

|

Available values:

NameDescription
None

The aggregate function is not applied.

| | Average |

Aggregates data by calculating the average value for a selected numeric or date-time interval.

| | Minimum |

Aggregates data by calculating the minimum value for a selected numeric or date-time interval.

| | Maximum |

Aggregates data by calculating the maximum value for a selected numeric or date-time interval.

| | Sum |

Aggregates data by calculating the summary for a selected numeric or date-time interval.

| | Count |

Aggregates data by calculating the number of non-null values for a selected numeric or date-time interval.

| | Histogram |

Aggregates data by calculating the number of all points for a selected numeric or date-time interval.

| | Financial |

Aggregates financial data for a selected interval into a single high-low-open-close data point, so that the high value equals the highest value of all data points in this interval; the low value equals the lowest value of all data points; the open value equals the value of the first data point and the close value equals the value of the last data point.

| | Custom |

Aggregates data using the custom CustomAggregateFunction calculator.

|

Remarks

The image below shows date-time data aggregation in the Manual scale mode using the Maximum function.

Note

The AggregateFunction property is set to AggregateFunction.Average by default.

To disable date-time data aggregation, set the AggregateFunction property to AggregateFunction.None.

To learn more, see Data Aggregation.

Example

This example uses manual date-time scale options of the X-axis. It sets the AxisX2D.DateTimeScaleOptions property to ManualDateTimeScaleOptions and specifies GridAlignment, MeasureUnit, and AggregateFunction properties.

This example obtains data from the GbpUsdRate.xml file. Download GbpUsdRate.xml

xaml
<dx:ThemedWindow
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
    xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts" 
    x:Class="DXWPFCharts.MainWindow"
    Title="MainWindow" Height="800" Width="1000">
    <Grid>
        <dxc:ChartControl>
            <dxc:XYDiagram2D >
                <dxc:XYDiagram2D.AxisX>
                    <dxc:AxisX2D GridLinesMinorVisible="True" GridLinesVisible="True" MinorCount="3">
                        <dxc:AxisX2D.Title>
                            <dxc:AxisTitle Content="Date"/>
                        </dxc:AxisX2D.Title>
                        <dxc:AxisX2D.DateTimeScaleOptions>
                            <dxc:ManualDateTimeScaleOptions AggregateFunction="Maximum" AutoGrid="False"
                                                            GridAlignment="Month" MeasureUnit="Day" 
                                                            GridSpacing="3" GridOffset="1"/>
                        </dxc:AxisX2D.DateTimeScaleOptions>
                    </dxc:AxisX2D>
                </dxc:XYDiagram2D.AxisX>
                <dxc:LineSeries2D DataSource="{Binding Path=Rate}" 
                                  ArgumentDataMember="Argument" ValueDataMember="Value" />
            </dxc:XYDiagram2D>
        </dxc:ChartControl>
    </Grid>
</dx:ThemedWindow>
csharp
using DevExpress.Xpf.Core;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Xml.Linq;

namespace DXWPFCharts {
    public partial class MainWindow : ThemedWindow {
        public MainWindow() {
            InitializeComponent();
            DataContext = new MyModel();
        }
    }
    public class DateTimePoint {
        double value;
        DateTime argument;

        public double Value {
            get { return value; }
        }

        public DateTime Argument {
            get { return argument; }
        }

        public DateTimePoint(DateTime argument, double value) {
            this.argument = argument;
            this.value = value;
        }
    }

    public class MyModel {
        List<DateTimePoint> rate = new List<DateTimePoint>();

        public List<DateTimePoint> Rate {
            get { return rate; }
        }

        public MyModel() {
            LoadPoints(rate, LoadFromFile("GbpUsdRate.xml"));
        }

        XDocument LoadFromFile(string xmlFile) {
            return XDocument.Load(xmlFile);
        }

        void LoadPoints(List<DateTimePoint> rate, XDocument document) {
            if (rate != null && document != null) {
                foreach (XElement element in document.Descendants("CurrencyRate")) {
                    DateTime argument = DateTime.Parse(element.Element("DateTime").Value);
                    double value = double.Parse(element.Element("Rate").Value, CultureInfo.InvariantCulture);
                    rate.Add(new DateTimePoint(argument, value));
                }
            }
        }
    }
}
vb
Imports DevExpress.Xpf.Core
Imports System
Imports System.Collections.Generic
Imports System.Globalization
Imports System.Xml.Linq

Namespace DXWPFCharts
    Public Class MainWindow
        Inherits ThemedWindow

        Public Sub New()
            InitializeComponent()
            DataContext = New MyModel()
        End Sub
    End Class

    Public Class DateTimePoint
        Private value As Double
        Private argument As DateTime

        Public ReadOnly Property Value As Double
            Get
                Return value
            End Get
        End Property

        Public ReadOnly Property Argument As DateTime
            Get
                Return argument
            End Get
        End Property

        Public Sub New(argument As DateTime, value As Double)
            Me.argument = argument
            Me.value = value
        End Sub
    End Class

    Public Class MyModel
        Private rate As List(Of DateTimePoint)

        Public ReadOnly Property Rate As List(Of DateTimePoint)
            Get
                Return rate
            End Get
        End Property

        Public Sub New()
            rate = New List(Of DateTimePoint)()
            LoadPoints(rate, LoadFromFile("GbpUsdRate.xml"))
        End Sub

        Private Function LoadFromFile(xmlFile As String) As XDocument
            Return XDocument.Load(xmlFile)
        End Function

        Private Sub LoadPoints(rate As List(Of DateTimePoint), document As XDocument)
            If rate IsNot Nothing AndAlso document IsNot Nothing Then
                For Each element As XElement In document.Descendants("CurrencyRate")
                    Dim argument As DateTime = DateTime.Parse(element.Element("DateTime").Value)
                    Dim value As Double = Double.Parse(element.Element("Rate").Value, CultureInfo.InvariantCulture)
                    rate.Add(New DateTimePoint(argument, value))
                Next
            End If
        End Sub
    End Class
End Namespace

Tip

To use automatic date-time scale options, set the AxisX2D.DateTimeScaleOptions property to AutomaticDateTimeScaleOptions and select the appropriate AutomaticDateTimeScaleOptions.AggregateFunction.

See Also

ManualDateTimeScaleOptions Class

ManualDateTimeScaleOptions Members

DevExpress.Xpf.Charts Namespace