Skip to main content

BoxPlotSeries2D Class

Represents the Box Plot series.

Namespace: DevExpress.Xpf.Charts

Assembly: DevExpress.Xpf.Charts.v24.1.dll

NuGet Package: DevExpress.Wpf.Charts

Declaration

public class BoxPlotSeries2D :
    XYSeries2D,
    ISideBySideBarSeriesView,
    IBarSeriesView,
    IGeometryHolder,
    ILineSeries

Remarks

The following image shows a Box Plot chart and its elements:

To create a Box Plot point, you should specify the following parameters:

  • Min
  • Max
  • First Quartile
  • Third Quartile
  • Median

The following parameters are optional:

  • Mean
  • Outliers

You can manually add points to a series or generate points from a data source. Refer to the Providing Data section for more about different approaches on how to populate a series with points.

The BoxPlotSeries2D class introduces the options that allow you to customize the appearance of Box Plot chart elements:

To change series point animation-related settings, use the PointAnimation property.

Example

This example shows how to create a Box Plot chart:

  1. Create a ChartControl and specify its ChartControl.Diagram property to a XYDiagram2D object. Note that the ChartControl.Diagram is a content property. You can declare a diagram in XAML directly after a chart control’s declaration without wrapping it in opening and closing ChartControl.Diagram tags.

  2. Add a BoxPlotSeries2D object to the Diagram.Series collection. Note that the Diagram.Series is a content property. You can declare series in XAML directly after a diagram’s declaration without wrapping them in opening and closing Diagram.Series tags.

  3. Use the following properties to bind the series to data:

  4. The following properties allow you to customize the Box Plot chart appearance:

Markup:

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:BoxPlotChart"
        xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts" 
        x:Class="BoxPlotChart.MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="600" Width="800">
    <Window.DataContext>
        <local:ChartViewModel/>
    </Window.DataContext>
    <Grid>
        <dxc:ChartControl>
            <dxc:ChartControl.Legends>
                <dxc:Legend HorizontalPosition="Left"/>
            </dxc:ChartControl.Legends>
            <dxc:XYDiagram2D>
                <dxc:BoxPlotSeries2D DataSource="{Binding Data}"
                                     DisplayName="Box Plot"
                                     ArgumentDataMember="Argument" 
                                     MinValueDataMember="Min" 
                                     MaxValueDataMember="Max"
                                     Quartile1ValueDataMember="Quartile1" 
                                     Quartile3ValueDataMember="Quartile3" 
                                     MedianValueDataMember="Median" 
                                     MeanValueDataMember="Mean" 
                                     OutlierValuesDataMember="Outliers"
                                     CapWidthPercentage="50" 
                                     BoxWidth="0.8">
                    <dxc:BoxPlotSeries2D.Model>
                        <dxc:SimpleBoxPlot2DModel/>
                    </dxc:BoxPlotSeries2D.Model>
                </dxc:BoxPlotSeries2D>
                <dxc:XYDiagram2D.AxisX>
                    <dxc:AxisX2D TickmarksMinorVisible="False"/>
                </dxc:XYDiagram2D.AxisX>
            </dxc:XYDiagram2D>
        </dxc:ChartControl>
    </Grid>
</Window>

Code-Behind:

using System.Collections.ObjectModel;
using System.Windows;
namespace BoxPlotChart {
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
        }
    }
    public class ChartViewModel {
        public Collection<DataPoint> Data { get { return DataPoint.GetDataPoints(); } }
        public class DataPoint {
            public string Argument { get; set; }
            public double Min { get; set; }
            public double Max { get; set; }
            public double Quartile1 { get; set; }
            public double Quartile3 { get; set; }
            public double Median { get; set; }
            public double Mean { get; set; }
            public double[] Outliers { get; set; }
            public DataPoint(string argument, double min, double max, double q1, double q3, double median, double mean, double[] outliers) {
                this.Argument = argument;
                this.Min = min;
                this.Max = max;
                this.Quartile1 = q1;
                this.Quartile3 = q3;
                this.Median = median;
                this.Mean = mean;
                this.Outliers = outliers;
            }
            public static Collection<DataPoint> GetDataPoints() {
                Collection<DataPoint> data = new Collection<DataPoint> {
                    new DataPoint("June", 46, 94, 64, 76, 70, 73, new double[]{ 30, 96.3, 99.56 }),
                    new DataPoint("July", 33, 121, 66, 88, 77, 75, new double[]{ 20, 22, 132.7 }),
                    new DataPoint("August", 10, 90, 40, 60, 50, 55, new double[]{ 4, 5, 95.4, 99.3, 109 })
                };
                return data;
            }
        }
    }
}

Implements

See Also