CustomAggregateFunction.Calculate(GroupInfo) Method
Calculates the aggregated values of the specified series point value group.
Namespace: DevExpress.XtraCharts
Assembly: DevExpress.XtraCharts.v24.1.dll
NuGet Package: DevExpress.Charts
Declaration
Parameters
Name | Type | Description |
---|---|---|
groupInfo | GroupInfo | Information about values that should be aggregated. |
Returns
Type | Description |
---|---|
Double[] | The array of data point values. |
Remarks
The group info stores the following value collections in its properties:
Property | Value Levels |
---|---|
GroupInfo.Values1 | Value (for common and the bubble series), Value_1 (for range series), High (for financial series) |
GroupInfo.Values2 | Weight (for the bubble series), Value_2 (for range series), Low (for financial series) |
GroupInfo.Values3 | Open (for financial series) |
GroupInfo.Values4 | Close (for financial series) |
Example
Follow the steps below to create an aggregate function.
- Create a class that inherits the CustomAggregateFunction class.
Implement its
CustomAggregateFunction.Calculate
method that then is called for each unique argument. Its groupInfo parameter is an object of the GroupInfo class and contains information about the argument and corresponding values:Property Value Type groupInfo.Values1 Value (for common and bubble series), Value_1 (for range series), Low (for financial series) groupInfo.Values2 Weight (for bubble series), Value_2 (for range series), High (for financial series) groupInfo.Values3 Open (for financial series) groupInfo.Values4 Close (for financial series) Initialize the ScaleGridOptionsBase.CustomAggregateFunction property with an object of the newly created class.
Set the ScaleGridOptionsBase.AggregateFunction property to Custom.
private void Form1_Load(object sender, EventArgs e) {
Series series = chartControl.Series["Random Data"];
series.DataSource = GenerateData(100_000);
series.ArgumentDataMember = "Argument";
series.ValueDataMembers.AddRange("Value", "Value", "Value", "Value");
XYDiagram diagram = chartControl.Diagram as XYDiagram;
diagram.AxisX.DateTimeScaleOptions.AggregateFunction = AggregateFunction.Custom;
diagram.AxisX.DateTimeScaleOptions.CustomAggregateFunction = new OhlcAggregateFunction();
}
class OhlcAggregateFunction : CustomAggregateFunction {
public override double[] Calculate(GroupInfo groupInfo) {
double open = groupInfo.Values1.First();
double close = groupInfo.Values1.Last();
double high = Double.MinValue;
double low = Double.MaxValue;
foreach (double value in groupInfo.Values1) {
if (high < value) high = value;
if (low > value) low = value;
}
return new double[] { high, low, open, close };
}
}