Chart for .NET / User's Guide / Axes / Scale / Scale Configurators / Hierarchical Scale Configurator
In This Topic
    Hierarchical Scale Configurator
    In This Topic

    Hierarchical scales are useful when you have to display grouped categorical or ordinal data. Examples for such data are regional or quarterly sales report charts. In both cases you have labels that denote (or group) labels from lower levels. The following chart shows a a simple quarterly sales chart:

    To create a hierarchical scale you have to create an instance of the NHierarchicalScaleConfigurator class and then add some nodes to it denoting the values on the scale. The following code shows how to accomplish this:

    C#
    Copy Code

    NChart chart = nChartControl1.Charts[0];

    // create a hierarchical scale configuratorNHierarchicalScaleConfigurator scale = new NHierarchicalScaleConfigurator();
    chart.Axis(
    StandardAxis.PrimaryX).ScaleConfigurator = scale;

    for (int i = 0; i < 2; i++)
    {
    // create a node representing the year
    NHierarchicalScaleNode yearNode = new NHierarchicalScaleNode(0, (i + 2007).ToString());
    yearNode.LabelStyle.TickMode =
    RangeLabelTickMode.Separators;
    scale.Nodes.AddChild(yearNode);

    for (int j = 0; j < 4; j++)
    {
    // create nodes representing the quarters within the year
    NHierarchicalScaleNode quarterNode = new NHierarchicalScaleNode(3, "Q" + (j + 1).ToString());
    quarterNode.LabelStyle.TickMode =
    RangeLabelTickMode.Separators;
    yearNode.ChildNodes.AddChild(quarterNode);
    }
    }

    scale.CreateSeparatorForEachLevel = true;

    Visual Basic
    Copy Code

    Dim chart As NChart = NChartControl1.Charts(0)

    ' create a hierarchical scale configuratorDim scale As New NHierarchicalScaleConfigurator
    chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator = scale

    For i As Integer = 0 To 1
    ' create a node representing the year
    Dim yearNode As New NHierarchicalScaleNode(0, (i + 2007).ToString())
    yearNode.LabelStyle.TickMode = RangeLabelTickMode.Separators
    Scale.Nodes.AddChild(yearNode)

    For j As Integer = 0 To 3
    ' create nodes representing the quarters within the year
    Dim quarterNode As New NHierarchicalScaleNode(3, "Q" + (j + 1).ToString())
    quarterNode.LabelStyle.TickMode = RangeLabelTickMode.Separators
    yearNode.ChildNodes.AddChild(quarterNode)
    Next j

    Next i

    Scale.CreateSeparatorForEachLevel = True

    Each node on the scale is represented by an instance of the NHierarchicalScaleNode class. The initializer constructor of this class accepts two arguments - the node length and text. Note that the above code sets the length of year nodes to zero. This is because it will be ignored for nodes that have children and therefore you do not have to specify it. For such nodes their length on the scale is determined by the sum of their children's length (in the above code the year node will have length of 12 as it contains four child nodes (year quarters) with length 3.

     Related Examples

    Windows Forms: All Examples \ Axes \ Scaling \ Hierarchical Scale

    Web Forms: All Examples \ Axes \ Scaling \ Hierarchical Scale