# Whole and Visual Ranges | WPF Controls | DevExpress Documentation

*Whole* and *visual* axis ranges define which data an [axis](/WPF/6334/controls-and-libraries/charts-suite/chart-control/axes/axes) displays. The whole range is automatically calculated based on the data of all series associated with the axis. A chart does not show values that are outside the range. A visual range is equal to a whole range by default and determines the data range the Chart control currently displays.

| An x-axis’s visual range is equal to a whole range | An x-axis’s visual range is less than a whole range |
| --- | --- |
| ![WPF_EqualRanges](/WPF/images/wpf_equalranges120933.png) | ![WPF_Scrolling](/WPF/images/wpf_scrolling120934.png) |

The following axes types allow you to operate with their whole or visual ranges:

- A whole range is available for [Axis](/WPF/DevExpress.Xpf.Charts.Axis) and [CircularAxisY2D](/WPF/DevExpress.Xpf.Charts.CircularAxisY2D) class descendants, and the [RadarAxisX2D](/WPF/DevExpress.Xpf.Charts.RadarAxisX2D) class object.
- A visual range is available for [Axis2D](/WPF/DevExpress.Xpf.Charts.Axis2D) class descendants.

## How End User Can Change a Visual Range

An end user changes a visual range when zooming and scrolling a chart. Note that changing the visual range does not affect the whole range.

![chart-scrolling](/WPF/images/chart-scrolling123796.png)

Use the markup below to enable scrolling and zooming in a chart:

- XAML

<section id="tabpanel_eDBWcp-I-J_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;dxc:XYDiagram2D EnableAxisXNavigation=&quot;True&quot;
                 EnableAxisYNavigation=&quot;True&quot;&gt;
&lt;!--...--&gt;
&lt;/dxc:XYDiagram2D&gt;
</code></pre></section>

## How to Exclude Axis Ranges Without Points

Enable the [DateTimeAggregationScaleOptionsBase.SkipRangesWithoutPoints](/WPF/DevExpress.Xpf.Charts.DateTimeAggregationScaleOptionsBase.SkipRangesWithoutPoints) property to exclude all date-time axis ranges without data points.

| SkipRangesWithoutPoints = **true** | SkipRangesWithoutPoints = **false** (Default) |
| --- | --- |
| ![SkipRangesWithoutPoints is enabled](/WPF/images/chart-control/skiprangeswithoutpoints-true.png) | ![SkipRangesWithoutPoints is disabled](/WPF/images/chart-control/skiprangeswithoutpoints-false.png) |

- XAML

<section id="tabpanel_eDBWcp-I-J-1_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;dxc:XYDiagram2D.AxisX&gt;
    &lt;dxc:AxisX2D&gt;
        &lt;dxc:AxisX2D.DateTimeScaleOptions&gt;
            &lt;dxc:ManualDateTimeScaleOptions SkipRangesWithoutPoints=&quot;True&quot;/&gt;
        &lt;/dxc:AxisX2D.DateTimeScaleOptions&gt;
    &lt;/dxc:AxisX2D&gt;
&lt;/dxc:XYDiagram2D.AxisX&gt;        
</code></pre></section>

## How to Configure Visual and Whole Ranges

The chart control calculates minimum and maximum axis range limits based on the corresponding argument and value data of all series in the chart. To disable automatic range calculation, you can use the [MinValue](/WPF/DevExpress.Xpf.Charts.Range.MinValue) and [MaxValue](/WPF/DevExpress.Xpf.Charts.Range.MaxValue) properties to explicitly specify range limits:

- XAML

<section id="tabpanel_eDBWcp-I-J-2_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;!--...--&gt;
&lt;dxc:XYDiagram2D.AxisX&gt;
    &lt;dxc:AxisX2D&gt;
        &lt;dxc:AxisX2D.WholeRange&gt;
            &lt;dxc:Range MinValue=&quot;05/24/2016&quot; 
                       MaxValue=&quot;08/25/2016&quot;/&gt;
        &lt;/dxc:AxisX2D.WholeRange&gt;
        &lt;dxc:AxisX2D.VisualRange&gt;
            &lt;dxc:Range MinValue=&quot;06/18/2016&quot; 
                       MaxValue=&quot;07/03/2016&quot;/&gt;
        &lt;/dxc:AxisX2D.VisualRange&gt;
    &lt;/dxc:AxisX2D&gt;
&lt;/dxc:XYDiagram2D.AxisX&gt;
&lt;!--...--&gt;
</code></pre></section>

You can call the [Range.SetMinMaxValues](/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues%28System.Object-System.Object%29) method to limit a range at runtime. The following code customizes an x-axis’s visual range:

- C#
- VB.NET

<section id="tabpanel_eDBWcp-I-J-3_tabid-csharp" role="tabpanel" data-tab="tabid-csharp">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;,&quot;/ (DevExpress.Xpf.Charts)(?:;|$)/&quot;:&quot;/WPF/DevExpress.Xpf.Charts&quot;}" class="lang-csharp">using DevExpress.Xpf.Charts;

private void Window_Loaded(object sender, RoutedEventArgs e) {
    Range visualRange = ((XYDiagram2D)chartControl1.Diagram).ActualAxisX.ActualVisualRange;
    visualRange.SetMinMaxValues(minValue: new DateTime(2019, 4, 1), maxValue: new DateTime(2019, 10, 1));
}
</code></pre></section>
<section id="tabpanel_eDBWcp-I-J-3_tabid-vb" role="tabpanel" data-tab="tabid-vb" aria-hidden="true" hidden="hidden">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;,&quot;/ (DevExpress.Xpf.Charts)(?:;|$)/&quot;:&quot;/WPF/DevExpress.Xpf.Charts&quot;}" class="lang-vb">Imports DevExpress.Xpf.Charts

Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim visualRange As Range = CType(chartControl1.Diagram, XYDiagram2D).ActualAxisX.ActualVisualRange
    visualRange.SetMinMaxValues(minValue:=New DateTime(2019, 4, 1), maxValue:=New DateTime(2019, 10, 1))
End Sub
</code></pre></section>

Call the [Range.SetAuto()](/WPF/DevExpress.Xpf.Charts.Range.SetAuto) method to ignore the previously set limits and enable automatic range calculation.

## Obtain Range Limits in Internal Units

The chart control converts values that are used to specify range limits for non-numeric (Qualitative, DateTime, and TimeSpan) axes to numeric equivalents. To obtain these values, use the [Range.ActualMinValueInternal](/WPF/DevExpress.Xpf.Charts.Range.ActualMinValueInternal) and [Range.ActualMaxValueInternal](/WPF/DevExpress.Xpf.Charts.Range.ActualMaxValueInternal) properties.

Call the [AxisBase.GetScaleValueFromInternal](/WPF/DevExpress.Xpf.Charts.AxisBase.GetScaleValueFromInternal%28System.Double%29) method to convert a limit value from internal numeric units to units of the axis.

### How to Display a Specified Range of Points

The following example displays the first five series points when you use a qualitative axis and arguments are unknown:

- XAML

<section id="tabpanel_eDBWcp-I-J-4_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;Window xmlns:dxc=&quot;http://schemas.devexpress.com/winfx/2008/xaml/charts&quot; ...&gt;
    &lt;Grid&gt;
        &lt;dxc:ChartControl x:Name=&quot;chartControl&quot;
                          BoundDataChanged=&quot;ChartControl_BoundDataChanged&quot;&gt;
                          &lt;!--...--&gt;
        &lt;/dxc:ChartControl&gt;
    &lt;/Grid&gt;
&lt;/Window&gt;
</code></pre></section>

- C#
- VB.NET

<section id="tabpanel_eDBWcp-I-J-5_tabid-csharp" role="tabpanel" data-tab="tabid-csharp">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;,&quot;/ (DevExpress.Xpf.Charts)(?:;|$)/&quot;:&quot;/WPF/DevExpress.Xpf.Charts&quot;,&quot;/ (System)(?:;|$)/&quot;:&quot;https://learn.microsoft.com/dotnet/api/system&quot;}" class="lang-csharp">using DevExpress.Xpf.Charts;
using System;

namespace ChartSample {
    public partial class MainWindow : Window {
        private void ChartControl_BoundDataChanged(object sender, RoutedEventArgs e) {
            XYDiagram2D diagram = chartControl.Diagram as XYDiagram2D;
            if (diagram != null) {
                string min = diagram.ActualAxisX.GetScaleValueFromInternal(0).ToString();
                string max = diagram.ActualAxisX.GetScaleValueFromInternal(4).ToString();
                diagram.ActualAxisX.ActualVisualRange.SetMinMaxValues(min, max);
            }
        }
    }
}
</code></pre></section>
<section id="tabpanel_eDBWcp-I-J-5_tabid-vb" role="tabpanel" data-tab="tabid-vb" aria-hidden="true" hidden="hidden">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;,&quot;/ (DevExpress.Xpf.Charts)(?:;|$)/&quot;:&quot;/WPF/DevExpress.Xpf.Charts&quot;}" class="lang-vb">Imports DevExpress.Xpf.Charts

Namespace ChartSample
    Public Partial Class MainWindow
        Inherits Window

        Private Sub ChartControl_BoundDataChanged(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim diagram As XYDiagram2D = TryCast(chartControl.Diagram, XYDiagram2D)

            If diagram IsNot Nothing Then
                Dim min As String = diagram.ActualAxisX.GetScaleValueFromInternal(0).ToString()
                Dim max As String = diagram.ActualAxisX.GetScaleValueFromInternal(4).ToString()
                diagram.ActualAxisX.ActualVisualRange.SetMinMaxValues(min, max)
            End If
        End Sub
    End Class
End Namespace
</code></pre></section>

### How to Prevent Automatic X-Axis Range Calculation

The chart control does not plot qualitative point arguments on an x-axis if point values are out the specified y-axis whole range. This occurs because of automatic x-axis whole range calculation. 

The following code specifies an x-axis whole range to display all argument values after a custom y-axis whole range is set:

- C#
- VB.NET

<section id="tabpanel_eDBWcp-I-J-6_tabid-csharp" role="tabpanel" data-tab="tabid-csharp">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-csharp">private void chartControl_BoundDataChanged(object sender, RoutedEventArgs e)
{
    XYDiagram2D diagram = (XYDiagram2D)chartControl.Diagram;

    var currentXmin = diagram.ActualAxisX.GetScaleValueFromInternal(diagram.ActualAxisX.ActualWholeRange.ActualMinValueInternal);
    var currentXmax = diagram.ActualAxisX.GetScaleValueFromInternal(diagram.ActualAxisX.ActualWholeRange.ActualMaxValueInternal);

    if (diagram.ActualAxisY.WholeRange == null)
        diagram.ActualAxisY.WholeRange = new Range();

    diagram.ActualAxisY.WholeRange.MinValue = 5;
    diagram.ActualAxisY.WholeRange.MaxValue = 20;

    diagram.ActualAxisX.ActualWholeRange.SetMinMaxValues(currentXmin, currentXmax);
}
</code></pre></section>
<section id="tabpanel_eDBWcp-I-J-6_tabid-vb" role="tabpanel" data-tab="tabid-vb" aria-hidden="true" hidden="hidden">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-vb">Private Sub chartControl_BoundDataChanged(ByVal sender As Object, ByVal e As RoutedEventArgs)
    Dim diagram As XYDiagram2D = CType(chartControl.Diagram, XYDiagram2D)
    Dim currentXmin = diagram.ActualAxisX.GetScaleValueFromInternal(diagram.ActualAxisX.ActualWholeRange.ActualMinValueInternal)
    Dim currentXmax = diagram.ActualAxisX.GetScaleValueFromInternal(diagram.ActualAxisX.ActualWholeRange.ActualMaxValueInternal)
    If diagram.ActualAxisY.WholeRange Is Nothing Then diagram.ActualAxisY.WholeRange = New Range()
    diagram.ActualAxisY.WholeRange.MinValue = 5
    diagram.ActualAxisY.WholeRange.MaxValue = 20
    diagram.ActualAxisX.ActualWholeRange.SetMinMaxValues(currentXmin, currentXmax)
End Sub
</code></pre></section>

## How to Specify Diagram Side Margins

The Chart Control adds additional margins between the outermost series point and the diagram’s edge. To configure margins, use the [Range.StartSideMargin](/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin), [Range.EndSideMargin](/WPF/DevExpress.Xpf.Charts.Range.EndSideMargin) or [Range.SideMarginsValue](/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue) property.

| **AutoSideMargins** = **true** | **SideMarginsValue** = **0**<br><br>(**AutoSideMargins** = **false**) |
| --- | --- |
| ![WPF_AutoSizeMargins](/WPF/images/wpf_autosizemargins120939.png) | ![WPF_AutoSizeMarginsFalse](/WPF/images/wpf_autosizemarginsfalse120940.png) |

The following example shows how to remove margins:

**Markup:**

- XAML

<section id="tabpanel_eDBWcp-I-J-7_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;dxc:XYDiagram2D.AxisX&gt;
    &lt;dxc:AxisX2D x:Name=&quot;xAxis&quot;&gt;
        &lt;dxc:AxisX2D.WholeRange&gt;
            &lt;dxc:Range SideMarginsValue=&quot;0&quot;/&gt;
        &lt;/dxc:AxisX2D.WholeRange&gt;
    &lt;/dxc:AxisX2D&gt;
&lt;/dxc:XYDiagram2D.AxisX&gt;
</code></pre></section>

**At runtime:**

- C#
- VB.NET

<section id="tabpanel_eDBWcp-I-J-8_tabid-csharp" role="tabpanel" data-tab="tabid-csharp">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-csharp">Range range = new Range();
xAxis.WholeRange = range;
range.SideMarginsValue = 0;
</code></pre></section>
<section id="tabpanel_eDBWcp-I-J-8_tabid-vb" role="tabpanel" data-tab="tabid-vb" aria-hidden="true" hidden="hidden">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-vb">Dim range As Range = New Range()
xAxis.WholeRange = range
range.SideMarginsValue = 0
</code></pre></section>

The [SideMarginSizeUnit](/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit) property defines margin measurement units.
When **SideMarginSizeUnit** is set to [SideMarginSizeUnit.AxisUnit](/WPF/DevExpress.Xpf.Charts.SideMarginSizeUnit) (the default value), margins are specified in axis measurement units. 

To define margins as a percentage of the axis range, set **Range.SideMarginSizeUnit** to [SideMarginSizeUnit.AxisRangePercentage](/WPF/DevExpress.Xpf.Charts.SideMarginSizeUnit). 

The example below demonstrates how to set the left margin as a percentage:

![Start side margin as percentage](/WPF/images/chart-control/start-side-margin-percent.png)

**Markup:**

- XAML

<section id="tabpanel_eDBWcp-I-J-9_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;dxc:ChartControl ... &gt;
    &lt;dxc:XYDiagram2D&gt;
        &lt;dxc:XYDiagram2D.AxisX&gt;
            &lt;dxc:AxisX2D x:Name=&quot;xAxis&quot; ...&gt;
                &lt;dxc:AxisX2D.WholeRange&gt;
                    &lt;dxc:Range StartSideMargin=&quot;20&quot; 
                               SideMarginSizeUnit=&quot;AxisRangePercentage&quot;/&gt;
                &lt;/dxc:AxisX2D.WholeRange&gt;
            &lt;/dxc:AxisX2D&gt;
        &lt;/dxc:XYDiagram2D.AxisX&gt;
    &lt;/dxc:XYDiagram2D&gt;
    ...
&lt;/dxc:ChartControl&gt;
</code></pre></section>

**At runtime:**

- C#
- VB.NET

<section id="tabpanel_eDBWcp-I-J-10_tabid-csharp" role="tabpanel" data-tab="tabid-csharp">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-csharp">Range range = new Range();
xAxis.WholeRange = range;
range.SideMarginSizeUnit = SideMarginSizeUnit.AxisRangePercentage;
range.StartSideMargin = 20;
</code></pre></section>
<section id="tabpanel_eDBWcp-I-J-10_tabid-vb" role="tabpanel" data-tab="tabid-vb" aria-hidden="true" hidden="hidden">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-vb">Dim range As Range = New Range()
xAxis.WholeRange = range
range.SideMarginSizeUnit = SideMarginSizeUnit.AxisRangePercentage
range.StartSideMargin = 20
</code></pre></section>

If you specify the **SideMarginsValue**, **StartSideMargin** or **EndSideMargin** property, the control ignores the [Range.AutoSideMargins](/WPF/DevExpress.Xpf.Charts.Range.AutoSideMargins) property.

## How to Hide Zero Level on a Chart Value Axis

When a y-axis range is automatically calculated, you can use the **AlwaysShowZeroLevel** property to hide the zero value level. In this case, a new optimal minimum value is specified for the y-axis:

| **AlwaysShowZeroLevel**=**true** | **AlwaysShowZeroLevel**=**false** |
| --- | --- |
| ![always-show-zero-level-true](/WPF/images/always-show-zero-level-true128438.png) | ![always-show-zero-level-false](/WPF/images/always-show-zero-level-false128439.png) |

Use the code below to hide a y-axis’s zero level:

- XAML

<section id="tabpanel_eDBWcp-I-J-11_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;dxc:XYDiagram2D&gt;
    &lt;dxc:XYDiagram2D.AxisY&gt;
        &lt;dxc:AxisY2D&gt;
            &lt;dxc:AxisY2D.WholeRange&gt;
                &lt;dxc:Range dxc:AxisY2D.AlwaysShowZeroLevel=&quot;False&quot;/&gt;
            &lt;/dxc:AxisY2D.WholeRange&gt;
        &lt;/dxc:AxisY2D&gt;
    &lt;/dxc:XYDiagram2D.AxisY&gt;
    &lt;!--...--&gt;
&lt;/XYDiagram2D&gt;
</code></pre></section>

Use the following properties to hide the zero level in [3D charts](/WPF/117682/controls-and-libraries/charts-suite/chart3d-control), circular charts ([Polar](/WPF/11825/controls-and-libraries/charts-suite/chart-control/series/2d-series-types/polar-series), and [Radar](/WPF/11824/controls-and-libraries/charts-suite/chart-control/series/2d-series-types/radar-series) series):

- [AxisY3D.AlwaysShowZeroLevel](/WPF/DevExpress.Xpf.Charts.AxisY3D.AlwaysShowZeroLevel)
- [ZAxis3D.AlwaysShowZeroLevel](/WPF/DevExpress.Xpf.Charts.ZAxis3D.AlwaysShowZeroLevel)
- [CircularAxisY2D.AlwaysShowZeroLevel](/WPF/DevExpress.Xpf.Charts.CircularAxisY2D.AlwaysShowZeroLevel)

## How to Configure Y-Axis’s Range Based on X-Axis’s Visual Range

The [XYDiagram2D.DependentAxesYRange](/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange) option allows you to only display y-axis values for point values that are in the x-axis’s visual range.

| **DependentAxesYRange**=**false** | **DependentAxesYRange**=**true** |
| --- | --- |
| ![dependent-axis-y-ranges-false](/WPF/images/dependent-axis-y-ranges-false132282.gif) | ![dependent-ranges](/WPF/images/dependent-ranges128615.gif) |

The following markup shows how to do this:

- XAML

<section id="tabpanel_eDBWcp-I-J-12_tabid-xaml" role="tabpanel" data-tab="tabid-xaml">
<pre><code data-code-links="{&quot;EnableAxisXNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisXNavigation&quot;,&quot;EnableAxisYNavigation&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.EnableAxisYNavigation&quot;,&quot;WholeRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis.WholeRange&quot;,&quot;VisualRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Axis2D.VisualRange&quot;,&quot;Range&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range&quot;,&quot;MinValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MinValue&quot;,&quot;MaxValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.MaxValue&quot;,&quot;SetMinMaxValues&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SetMinMaxValues(System.Object-System.Object)&quot;,&quot;SideMarginsValue&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginsValue&quot;,&quot;StartSideMargin&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.StartSideMargin&quot;,&quot;SideMarginSizeUnit&quot;:&quot;/WPF/DevExpress.Xpf.Charts.Range.SideMarginSizeUnit&quot;,&quot;AlwaysShowZeroLevel&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisY2D.AlwaysShowZeroLevel&quot;,&quot;DependentAxesYRange&quot;:&quot;/WPF/DevExpress.Xpf.Charts.XYDiagram2D.DependentAxesYRange&quot;,&quot;StickToEdge&quot;:&quot;/WPF/DevExpress.Xpf.Charts.AxisX2D.StickToEdge&quot;}" class="lang-xaml">&lt;dxc:ChartControl&gt;
    &lt;dxc:XYDiagram2D DependentAxesYRange=&quot;True&quot;&gt;
        &lt;dxc:XYDiagram2D.AxisX&gt;
            &lt;dxc:AxisX2D StickToEdge=&quot;True&quot;/&gt;
        &lt;/dxc:XYDiagram2D.AxisX&gt;
        &lt;!--...--&gt;
    &lt;/dxc:XYDiagram2D&gt;
&lt;/dxc:ChartControl&gt;
</code></pre></section>

See Also

[Zoom and Scroll in 2D XY-Charts](/WPF/11234/controls-and-libraries/charts-suite/chart-control/zoom-scroll-and-rotate-the-chart/zoom-and-scroll-in-2d-xy-charts)

[Zoom and Scroll in 3D XY-Charts](/WPF/11235/controls-and-libraries/charts-suite/chart-control/zoom-scroll-and-rotate-the-chart/zoom-and-scroll-in-3d-xy-charts)

[Chart Clients for the Range Control](/WPF/16847/controls-and-libraries/charts-suite/chart-control/chart-clients-for-the-range-control)

[Data Aggregation](/WPF/16846/controls-and-libraries/charts-suite/chart-control/data-aggregation)

[Work Time and Workday Configuration](/WPF/116192/controls-and-libraries/charts-suite/chart-control/provide-data/work-time-and-workday-configuration)