How to: Create a 2D Overlapped Range Bar Chart

  • 2 minutes to read

The following example demonstrates how to create a 2D Overlapped Range Bar chart. To do this, it is necessary to assign the ChartControl.Diagram property to XYDiagram2D, and then add two RangeBarOverlappedSeries2D objects with points to the diagram's Diagram.Series collection.

Also, this example shows how to add a chart title and to hide markers and labels for both series to improve chart appearance.

<Window x:Class="_2DOverlappedRangeBarChart.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
        xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
        Title="MainWindow" Height="480" Width="640" >
    <Grid>
        <dxc:ChartControl Name="chartControl1">
            <dxc:ChartControl.Diagram>
                <dxc:XYDiagram2D>
                    <dxc:XYDiagram2D.Series>
                        <dxc:RangeBarOverlappedSeries2D ArgumentScaleType="DateTime" 
                                                        MaxMarkerVisible="False" MinMarkerVisible="False">
                            <dxc:RangeBarOverlappedSeries2D.Points>
                                <dxc:SeriesPoint Argument="01/01/2010" Value="73.39" dxc:RangeBarSeries2D.Value2="84.68"/>
                                <dxc:SeriesPoint Argument="02/01/2010" Value="71.19" dxc:RangeBarSeries2D.Value2="80.16"/>
                                <dxc:SeriesPoint Argument="03/01/2010" Value="77.1" dxc:RangeBarSeries2D.Value2="81.18"/>
                                <dxc:SeriesPoint Argument="04/01/2010" Value="78.2" dxc:RangeBarSeries2D.Value2="83.59"/>
                                <dxc:SeriesPoint Argument="05/01/2010" Value="64.91" dxc:RangeBarSeries2D.Value2="85.14"/>
                                <dxc:SeriesPoint Argument="06/01/2010" Value="70.94" dxc:RangeBarSeries2D.Value2="78.86"/>
                                <dxc:SeriesPoint Argument="07/01/2010" Value="72.33" dxc:RangeBarSeries2D.Value2="79.53"/>
                                <dxc:SeriesPoint Argument="08/01/2010" Value="70.2" dxc:RangeBarSeries2D.Value2="81.7"/>
                                <dxc:SeriesPoint Argument="09/01/2010" Value="72.51" dxc:RangeBarSeries2D.Value2="80.22"/>
                                <dxc:SeriesPoint Argument="10/01/2010" Value="79.74" dxc:RangeBarSeries2D.Value2="83.48"/>
                            </dxc:RangeBarOverlappedSeries2D.Points>
                            <dxc:RangeBarOverlappedSeries2D.Label>
                                <dxc:SeriesLabel Visible="False" />
                            </dxc:RangeBarOverlappedSeries2D.Label>
                        </dxc:RangeBarOverlappedSeries2D>
                        <dxc:RangeBarOverlappedSeries2D  ArgumentScaleType="DateTime" BarWidth="0.2"
                                                         MaxMarkerVisible="False" MinMarkerVisible="False">
                            <dxc:RangeBarOverlappedSeries2D.Points>
                                <dxc:SeriesPoint Argument="01/01/2010" Value="72.89" dxc:RangeBarSeries2D.Value2="83.18"/>
                                <dxc:SeriesPoint Argument="02/01/2010" Value="71.19" dxc:RangeBarSeries2D.Value2="80.16"/>
                                <dxc:SeriesPoint Argument="03/01/2010" Value="78.7" dxc:RangeBarSeries2D.Value2="83.76"/>
                                <dxc:SeriesPoint Argument="04/01/2010" Value="81.45" dxc:RangeBarSeries2D.Value2="86.84"/>
                                <dxc:SeriesPoint Argument="05/01/2010" Value="65.96" dxc:RangeBarSeries2D.Value2="86.19"/>
                                <dxc:SeriesPoint Argument="06/01/2010" Value="71.44" dxc:RangeBarSeries2D.Value2="79.79"/>
                                <dxc:SeriesPoint Argument="07/01/2010" Value="71.98" dxc:RangeBarSeries2D.Value2="79.03"/>
                                <dxc:SeriesPoint Argument="08/01/2010" Value="71.2" dxc:RangeBarSeries2D.Value2="82.55"/>
                                <dxc:SeriesPoint Argument="09/01/2010" Value="72.41" dxc:RangeBarSeries2D.Value2="79.97"/>
                                <dxc:SeriesPoint Argument="10/01/2010" Value="79.49" dxc:RangeBarSeries2D.Value2="83.23"/>
                            </dxc:RangeBarOverlappedSeries2D.Points>
                            <dxc:RangeBarOverlappedSeries2D.Label>
                                <dxc:SeriesLabel Visible="False"/>
                            </dxc:RangeBarOverlappedSeries2D.Label>
                        </dxc:RangeBarOverlappedSeries2D>
                    </dxc:XYDiagram2D.Series>
                    <dxc:XYDiagram2D.AxisX>
                        <dxc:AxisX2D GridLinesVisible="True" DateTimeGridAlignment="Month">
                            <dxc:AxisX2D.DateTimeOptions>
                                <dxc:DateTimeOptions Format="Custom" FormatString="MMMM" />
                            </dxc:AxisX2D.DateTimeOptions>
                        </dxc:AxisX2D>
                    </dxc:XYDiagram2D.AxisX>
                    <dxc:XYDiagram2D.AxisY>
                        <dxc:AxisY2D>
                            <dxc:AxisY2D.Title>
                                <dxc:AxisTitle Content="$ per barrel" />
                            </dxc:AxisY2D.Title>
                            <dxc:AxisY2D.Range>
                                <dxc:AxisRange dxc:AxisY2D.AlwaysShowZeroLevel="False" />
                            </dxc:AxisY2D.Range>
                        </dxc:AxisY2D>
                    </dxc:XYDiagram2D.AxisY>
                </dxc:XYDiagram2D>
            </dxc:ChartControl.Diagram>
            <dxc:ChartControl.Titles>
                <dxc:Title Dock="Top" HorizontalAlignment="Center">Crude Oil Prices in 2010</dxc:Title>
            </dxc:ChartControl.Titles>
        </dxc:ChartControl>
    </Grid>
</Window>