Skip to main content
All docs
V25.1
  • SeriesTemplateSummaryAdapter Class

    An adapter that creates series based on a template and summarizes series points.

    Namespace: DevExpress.XtraCharts

    Assembly: DevExpress.XtraCharts.v25.1.dll

    NuGet Package: DevExpress.Charts

    Declaration

    public class SeriesTemplateSummaryAdapter :
        SeriesTemplateAdapter,
        ISupportIndexAdapter<ISeries>,
        ISummaryAdapter,
        ISummaryOptionsOwner

    Remarks

    The SeriesTemplateSummaryAdapter allows you to create multiple series based on a template and summarize values of points with the same arguments.

    Depending on the argument axis scale type, use one of the following properties to define scale-specific options:

    The SummaryOptionsBase.SummaryFunction property allows you to specify the function used to summarize points. The following functions are available:

    • MIN([Data_Member_Name])
    • MAX([Data_Member_Name])
    • AVERAGE([Data_Member_Name])
    • SUM([Data_Member_Name])
    • COUNT()

    Some functions require you to specify the data member name (the Data_Member_Name parameter) that supplies values to summarize.

    To create a new function, use the ChartControl.RegisterSummaryFunction method.

    Example

    The following example shows how to create multiple series based on a template and aggregate their points with equal arguments:

    • Define the chart control’s DataSource property.
    • Create a SeriesTemplateSummaryAdapter object.
    • Populate the adapter’s DataMembers collection. You should specify data members that contain point arguments, point values, and values that identify series.
    • Specify the SummaryOptionsBase.SummaryFunction property to select a function used to summarize values.
    • Use the SeriesTemplate.DataAdapter property to assign the adapter to the chart.
    using DevExpress.XtraCharts;
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
    
    namespace SummaryChart {
        public partial class Form1 : Form {
            private void OnLoad(object sender, EventArgs e) {
    
                // Specify the chart data source.
                chart.DataSource = DataPoint.GetDataPoints();
    
                //Create a summary data adapter.
                SeriesTemplateSummaryAdapter dataAdapter = new SeriesTemplateSummaryAdapter();
    
                // Create a data member that defines arguments.
                dataAdapter.DataMembers.Add(new DataMember {
                    DataMemberType = ChartDataMemberType.Argument,
                    ColumnName = "Argument",
                    ScaleType = ScaleType.Numerical
                });
                // Create a data member that defines values.
                dataAdapter.DataMembers.Add(new DataMember {
                    DataMemberType = ChartDataMemberType.Value,
                    ColumnName = "Value",
                    ScaleType = ScaleType.Numerical
                });
                // Create a data member that identifies data series.
                dataAdapter.DataMembers.Add(new DataMember {
                    DataMemberType = ChartDataMemberType.Series,
                    ColumnName = "Name",
                    ScaleType = ScaleType.Qualitative
                });
    
                // Specify a summary function.
                dataAdapter.NumericSummaryOptions.SummaryFunction = "AVERAGE([Value])";
    
                // Assign the data adapter to the chart.
                chart.SeriesTemplate.DataAdapter = dataAdapter;
            }
    
            public class DataPoint {
                public double Argument { get; set; }
                public double Value { get; set; }
                public string Name { get; set; }
                public static List<DataPoint> GetDataPoints() {
                    return new List<DataPoint> {
                        new DataPoint { Argument= 1, Value = 853D, Name = "Series 2"},
                        new DataPoint { Argument= 1, Value = 321D, Name = "Series 2"},
                        new DataPoint { Argument= 1, Value = 655D, Name = "Series 1"},
                        new DataPoint { Argument= 1, Value = 1325D, Name = "Series 1"},
                        new DataPoint { Argument= 2, Value = 653D, Name = "Series 2"},
                        new DataPoint { Argument= 2, Value = 172D, Name = "Series 2"},
                        new DataPoint { Argument= 2, Value = 255D, Name = "Series 1"},
                        new DataPoint { Argument= 3, Value = 981D, Name = "Series 1"},
                        new DataPoint { Argument= 3, Value = 913D, Name = "Series 2"},
                        new DataPoint { Argument= 4, Value = 123D, Name = "Series 1"},
                        new DataPoint { Argument= 4, Value = 1011D, Name = "Series 1"},
                        new DataPoint { Argument= 4, Value = 359D, Name = "Series 2"},
                        new DataPoint { Argument= 4, Value = 721D, Name = "Series 2"},
                        new DataPoint { Argument= 4, Value = 565D, Name = "Series 1"}
                    };
                }
            }
        }
    }
    
    See Also