major-tick-factory (非ローカル オプションの定義)
public major-tick-factory:#TickFactory =null
パッケージ: CURL.GUI.CHARTS

ChartAxis の主目盛りを作成するために使用されるファクトリ プロシージャを定義するオプション。

説明

主目盛りは、標準 ChartAxis 実装のいずれかによって作成される唯一の目盛りです。補助目盛りを生成するには、軸タイプの 1 つをサブクラス化し、ChartAxis.generate-minor-ticks をオーバーライドする必要があります。
ChartAxis.generate-major-tick を呼び出して、既定の目盛り Shape を作成し、結果を変更すると便利です。(この手法は、次の例で用いられています。)
このファクトリ プロシージャは、Shape 型のオブジェクトを返すために必要です。これらのオブジェクトも ChartTick から継承する必要があります。詳細およびパラメータについては、TickFactory を参照してください。
このオプションは、一般的に ChartAxis そのものについてではなく、LayeredChart のメンバについて設定されます。それは、軸が再生成される場合にも、オプション設定が残るようにするためです。この例については、次を参照してください。軸の生成および関連概念については、LayeredChart も参照してください。

この例では、ChartTick クラスと ArrowShape クラスを組み込み、矢印のような目盛りを作成します。目盛りファクトリーは、下軸用に目盛りが生成されることを前提としています。矢印の端点として {Distance2d position, 0pt}
{Distance2d position,
10pt}
が使用されるためです。AxisPosition に使用可能な値は、それぞれ、少々異なる端点のペアを必要とします。ファクトリーが使用される場所を制御できるので、この種の前提は、それを理解していれば難しくはありません。

例: ChartTick サブクラス化による major-tick-factory の使用
{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{define-class package final MyArrowTick
  {inherits ArrowShape, ChartTick}

  {constructor package {default
                           axis-position:AxisPosition,
                           position:Distance,
                           tick-index:int,
                           value:any,
                           ...
                       }
    {construct-super.ChartTick axis-position, position, tick-index, value}
    {construct-super.ArrowShape ...}
  }
}

{LayeredChart
    width = 15cm,
    height = 7cm,
    arrow-head-style = ArrowStyle.solid,
    arrow-head-width = 6px,
    arrow-head-length = 6px,
    arrow-body-width = 2px,
    arrow-tail-style = ArrowStyle.none,
    bottom-axis-parent =
        {ShapeGroup
            || Override for just the bottom axis:
            major-tick-factory =
                {proc {axis:ChartAxis,
                       value:any,
                       tick-index:int,
                       position:Distance
                      }:Shape

                    {return
                        {MyArrowTick
                            axis.position,
                            position,
                            tick-index,
                            value,
                            {Distance2d position, 0pt},
                            {Distance2d position, 10pt}
                        }
                    }
                }
        },
    {LineLayer
        sample-records,
        "Age",
        "Points",
        x-axis-data = {ChartDataSeries sample-records, "Name"}
    }
    
}