バージョン

カスタム軸目盛値の作成

このトピックは、 XamDataChart™ コントロールのカスタム軸目盛値機能を紹介し、コード例を示して、数値軸用カスタム目盛値の作成方法を説明します。

概要

XamDataChart コントロールは、カスタム軸目盛値をアプリケーション内で実装できるよう設計されています。これは、数値軸 (たとえば NumericYAxis) の TickmarkValues プロパティを抽象クラス TickmarkValues から継承するオブジェクトに設定して行うことができます。

サポートされる軸

XamDataChart コントロールの軸の詳細については、「チャート軸」トピックを参照してください。

表 1 - カスタム軸目盛値をサポートする軸タイプのリスト。

軸タイプ 説明

数値が散布図シリーズを使用して XamDataChart にプロットされる水平方向の X 軸を表します。

数値が 散布図シリーズ財務シリーズ、およびカテゴリ シリーズを使用して XamDataChart にプロットされる垂直方向の Y 軸を表します。

数値が極座標シリーズおよびラジアル シリーズを使用して XamDataChart にプロットされるラジアル軸を表します。

極座標シリーズを使用して XamDataChart に数値がプロットされる水平方向の角度軸を表します。

TickmarkValues プロパティ

表 2 - 目盛値に関係する軸プロパティの API 概要

軸プロパティ プロパティ タイプ 説明

軸上の目盛位置を定義する値を取得または設定します。

TickmarkValues クラス

TickmarkValues は、カスタム目盛値を定義するオーバーライド可能なメソッドを提供する抽象クラスです。

図 3 - TickmarkValues クラスのオーバーライド可能なメソッドの API 概要

メソッド 戻り値の型 説明

IEnumerable<double>

数値軸の主目盛値を返します

IEnumerable<double>

数値軸の副目盛値を返します

Initialize

void

軸ラベル、ストリップライン、およびグリッドラインを描画する前に目盛値を初期化します。

カスタム目盛値を定義するオブジェクトの例に CustomTickmarkValues があります。このオブジェクトは、主目盛の位置 ( 0, 4, 5, 6, 10, 14, 15, 16, 20) を定義し、副目盛を 1 の間隔で配置します。

プレビュー

xamDataChart Creating Custom Axis Tickmark Values 01.png

図 1 - Y 軸に適用される CustomTickmarkValues のある XamDataChart コントロールのプレビュー

実装

以下のコードは、主目盛および副目盛のカスタム位置を定義するカスタム CustomTickmarkValues を作成する方法を示します。

Visual Basic の場合:

Imports Infragistics.Controls.Charts

Namespace Infragistics.Samples.Common
    Public Class CustomTickmarkValues
        Inherits TickmarkValues
        Public Sub New()
            ' カスタム目盛値を定義します
            Me.Tickmarks = New DoubleCollection() From { 0.0, 4.0, 5.0, 6.0, 10.0, 14.0, 15.0, 16.0, 20.0 }
        End Sub

        Protected First As Double
        Protected Last As Double
        Protected Tickmarks As DoubleCollection

        ''' <summary>
        ''' 軸ラベル、ストリップライン、およびグリッドラインを描画する前に目盛値を初期化します
        ''' </summary>
        ''' <param name="initializationParameters"></param>
        Public Overrides Sub Initialize(initializationParameters As TickmarkValuesInitializationParameters)
            MyBase.Initialize(initializationParameters)
            ' 初期化は、最大値および最小値を保存するためにオーバーライドされます
            ' これらの値は後で MajorValues() および MinorValues() メソッドで使用されます。
            Me.First = initializationParameters.VisibleMinimum
            Me.Last = initializationParameters.VisibleMaximum
        End Sub

        ''' <summary>
        ''' 主目盛値を返します
        ''' </summary>
        ''' <returns></returns>
        Public Overrides Function MajorValues() As IEnumerable(Of Double)
            Dim values As IEnumerable(Of Double) = Tickmarks.Where(Function(value) value >= Me.First AndAlso value <= Me.Last)
            Return values
        End Function

        ''' <summary>
        ''' 副目盛値を返します
        ''' </summary>
        ''' <returns></returns>
        Public Overrides Function MinorValues() As IEnumerable(Of Double)
            Dim start As Double = Me.First
            Dim minorValue As Double = start
            While minorValue < Me.Last
                yield Return minorValue
                minorValue += 1.0
            End While
        End Function
    End Class
End Namespace

C# の場合:

using Infragistics.Controls.Charts

namespace Infragistics.Samples.Common
{
    public class CustomTickmarkValues : TickmarkValues
    {
        public CustomTickmarkValues()
        {
            // カスタム目盛値を定義します
            this.Tickmarks = new DoubleCollection { 0.0, 4.0, 5.0, 6.0, 10.0, 14.0, 15.0, 16.0, 20.0 };
        }

        protected double First;
        protected double Last;
        protected DoubleCollection Tickmarks;

        /// <summary>
        /// 軸ラベル、ストリップライン、およびグリッドラインを描画する前に目盛値を初期化します
        /// </summary>
        /// <param name="initializationParameters"></param>
        public override void Initialize(TickmarkValuesInitializationParameters initializationParameters)
        {
            base.Initialize(initializationParameters);
            // 初期化は、最大値および最小値を保存するためにオーバーライドされます
            // これらの値は後で MajorValues() および MinorValues() メソッドで使用されます。
            this.First = initializationParameters.VisibleMinimum;
            this.Last = initializationParameters.VisibleMaximum;
        }

        /// <summary>
        /// 主目盛値を返します
        /// </summary>
        /// <returns></returns>
        public override IEnumerable<double> MajorValues()
        {
            IEnumerable<double> values = Tickmarks.Where((value) => value >= this.First && value <= this.Last);
            return values;
        }

        /// <summary>
        /// 副目盛値を返します
        /// </summary>
        /// <returns></returns>
        public override IEnumerable<double> MinorValues()
        {
            double start = this.First;
            for (double minorValue = start; minorValue < this.Last; minorValue += 1.0)
            {
                yield return minorValue;
            }
        }
    }
}

以下のコード スニペットでは、XamDataChart コントロールで Y 軸に CustomTickmarkValues を設定する方法を示します。

XAML の場合:

<ig:XamDataChart.Axes>
    <ig:NumericYAxis Name="yAxis" Label="{}{} %" >
        <!-- ========================================================================== -->
        <ig:NumericYAxis.TickmarkValues>
            <common:CustomTickmarkValues />
        </ig:NumericYAxis.TickmarkValues>
        <!-- ========================================================================== -->
    </ig:NumericYAxis>
</ig:XamDataChart.Axes>