Skip to main content

How to: Create a 2D Side-by-Side Range Bar Chart

  • 2 minutes to read

The following example demonstrates how to create a Side-by-Side Range Bar chart. For this, it is necessary to assign the ChartControl.Diagram property to XYDiagram2D, and then add two RangeBarSideBySideSeries2D 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="SideBySideRangeBar2DChart.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:RangeBarSideBySideSeries2D  ArgumentScaleType="DateTime" 
                                                         MinMarkerVisible="False" MaxMarkerVisible="False">
                            <dxc:RangeBarSideBySideSeries2D.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:RangeBarSideBySideSeries2D.Points>
                            <dxc:RangeBarSideBySideSeries2D.Label>
                                <dxc:SeriesLabel  Visible="False" />
                            </dxc:RangeBarSideBySideSeries2D.Label>
                        </dxc:RangeBarSideBySideSeries2D>
                        <dxc:RangeBarSideBySideSeries2D  DisplayName="West Texas Intermediate" ArgumentScaleType="DateTime" 
                                                         MinMarkerVisible="False" MaxMarkerVisible="False">
                            <dxc:RangeBarSideBySideSeries2D.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:RangeBarSideBySideSeries2D.Points>
                            <dxc:RangeBarSideBySideSeries2D.Label>
                                <dxc:SeriesLabel Visible="False" />
                            </dxc:RangeBarSideBySideSeries2D.Label>
                        </dxc:RangeBarSideBySideSeries2D>
                    </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>