Skip to main content
All docs
V24.1

SeriesTemplateSummaryAdapter Class

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

Namespace: DevExpress.XtraCharts

Assembly: DevExpress.XtraCharts.v24.1.dll

NuGet Package: DevExpress.Charts

Declaration

[TypeConverter(typeof(LocalizableExpandableObjectTypeConverter))]
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