ScaleGridOptionsBase.CustomAggregateFunction Property
Gets or sets the custom aggregate function callback that calculates the aggregated values.
Namespace: DevExpress.XtraCharts
Assembly: DevExpress.XtraCharts.v20.2.dll
NuGet Packages: DevExpress.Charts, DevExpress.WindowsDesktop.Charts
Declaration
Property Value
Type | Description |
---|---|
CustomAggregateFunction | The custom aggregate function callback. |
Property Paths
You can access this nested property as listed below:
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 };
}
}
Related GitHub Examples
The following code snippet (auto-collected from DevExpress Examples) contains a reference to the CustomAggregateFunction property.
Note
The algorithm used to collect these code examples remains a work in progress. Accordingly, the links and snippets below may produce inaccurate results. If you encounter an issue with code examples below, please use the feedback form on this page to report the issue.