ChartLayer (クラス)
public abstract ChartLayer {inherits Shape, Observer}
パッケージ: CURL.GUI.CHARTS
直接継承しているサブクラス: StackableChartLayer

LayeredChart 内の 1 つ以上のプロットを表す抽象クラス。

説明

ChartLayer objects are used to define which data should be plotted, and the manner in which they should be plotted. It is designed to be subclassable, so you can create your own chart style. However, it is usually simpler to start by modifying a standard implementation. All implementations contain a shape-factory option, which you can use to override its method of generating the Shape objects comprising the plot.

The standard implementations are:



Note that it may also be possible to get the plot you desire by combining multiple ChartLayers in a LayeredChart. For example, it is easy to get a line plot with icons at each data point by placing a ScatterLayer on top of a LineLayer. See LayeredChart for an example of this.

注意事項

Shape オブジェクトを ChartLayer 自体に追加することによって、グラフに注釈を付けることは一般的です。たとえば、RectangleShape を追加して、グラフ全体に渡る一定の値を表示できます。ChartLayer は、プロット エリアと同じ原点 (つまり、プロット エリアの左下) を共有します。標準レイヤ実装のすべては、ChartLayer.update-layout 時に形状の子をクリアします。これは、この実装に追加されたオブジェクトがすべてレイアウト処理中に削除されることを意味します。
ChartLayoutChanged イベントに応答するグラフの注釈を配置するようにお勧めします。これにより、削除されている可能性があるオブジェクトを追加できるようになります。
このオブジェクトは、"ChartLayer"のスタイル ルールを記述することによってスタイル化することが出来ます。

この例は、グラフのレベル マーカーとして RectangleShape が追加されていることを示しています。

例: レベル線による ChartLayer の注釈付け
{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let level-value:double = 3}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 7cm,
        {LineLayer
            sample-records,
            "Points",
            {on ChartLayoutChanged at ll:LineLayer do
                let constant y:Distance =
                    {ll.chart.left-axis.get-position level-value}
                {ll.add
                    {RectangleShape
                        {GRect 0m, {ll.chart.get-x-axis-length}, .5pt - y, .5pt + y},
                        color = "red",
                        {TextShape
                            "" & level-value,
                            valign = "bottom",
                            translation =
                                {Distance2d
                                    0.8 * {ll.chart.get-x-axis-length},
                                    y
                                }
                        }
                    }
                }
            }
        }
    }    
}

{value chart}

Level value:
{TextField
    value = "" & level-value,
    {on ValueFinished at tf:TextField do
        set level-value = {tf.value.to-double}
        {chart.invalidate-layout}
    }
}

コンストラクタ
default:新しい ChartLayer を作成します。
コンストラクタ protected {ChartLayer.default
x-axis-data:#ChartDataSeries = null,
...
}

プロパティ
chart:この ChartLayer を含む LayeredChart (ある場合)。
フィールド public-get private-set ChartLayer.chart:#LayeredChart
color-associations:特定の色を特定の ChartDataSeries に関連付けるマッピングを提供します。
フィールド public constant ChartLayer.color-associations:{Array-of DataSeriesColorPair} ={new {Array-of DataSeriesColorPair}}
generate-y-axes?:この ChartLayer の Y 軸生成を考慮するかどうかを決定します。
アクセサ public ChartLayer.generate-y-axes?:bool
legend-enabled?:Chart の凡例作成を有効または無効にするために使用できる bool
非ローカル オプション public ChartLayer.legend-enabled?:bool
legend-entry-factory:Chart の凡例の個別の凡例項目を生成するために使用されるファクトリ プロシージャ。
非ローカル オプション public ChartLayer.legend-entry-factory:LegendEntryFactory
style-element:スタイリングの目的のための、この Visual の "要素" や "型" です。
アクセサ public ChartLayer.style-element:String
x-axis-data:X 軸の自動生成に使用される ChartDataSeries
アクセサ public ChartLayer.x-axis-data:#ChartDataSeries
セッター public ChartLayer.x-axis-data:#ChartDataSeries
y-axis-data:この ChartLayer でプロットされる ChartDataSeries
フィールド public constant ChartLayer.y-axis-data:{Array-of ChartDataSeries} ={new {Array-of ChartDataSeries}}
プロパティ 継承 Shape: as-Shape, border-color, color, draw-operation, graphical-parent, option-parent, possibly-displayed?, selection-context, shape-parent, shape-selectable, stroke-thickness, transformation, visible?
プロパティ 継承 ShapeContainerBase: as-ShapeRoot, shape-children
プロパティ 継承 Visual: _style-element, clonable-class?, completely-clonable-children?, cursor, data-source, display-context, dragee, font-size, has-key-focus?, input-method-enabled?, input-method-keyboard-mode, name, options, style-class, style-manager, style-options, test-child?, test-description, test-name, test-parent?, test-type-name, test-visible?, tooltip, user-data, visual-parent
プロパティ 継承 DataBindingTarget: data-binding-context, data-bindings
プロパティ 継承 EventTarget: event-handlers
プロパティ 継承 OptionListInterface: option-register-proc, options-present-here, registered-option-keys

メソッド
append-color-association:ChartLayer.color-associationsDataSeriesColorPair を追加します。
public {ChartLayer.append-color-association
association:DataSeriesColorPair
}:void
append-data-series:プロットされる ChartLayer.y-axis-dataChartDataSeries を追加します。
public {ChartLayer.append-data-series data:ChartDataSeries}:void
compute-data-min-max:data に関連した最小値と最大値を決定します。
public {ChartLayer.compute-data-min-max}:(min:any, max:any)
create-legend-entries:この ChartLayer に必要な凡例項目を作成します。
public {ChartLayer.create-legend-entries
container:{Array-of Graphic},
entries-already-created:DataSeriesColorPairSet
}:void
detach:この形状を親から切り離します。
public {ChartLayer.detach}:void
draw:このオブジェクトの可視表現を描画します。
public {ChartLayer.draw r2d:Renderer2d}:void
get-data-mapping:この ChartLayerChartDataSeries の 1 つに対応する ChartDataMapping オブジェクトを取得します。
public {ChartLayer.get-data-mapping}:ChartDataMapping
get-data-series-from-shape:Shape に関連した ChartDataSeries を決定します (ある場合)。
public abstract {ChartLayer.get-data-series-from-shape
shape:Shape
}:#ChartDataSeries
get-data-series-visibility:ChartLayer.y-axis-data の個々のメンバの表示を返します。
public final {ChartLayer.get-data-series-visibility
data-series-index:int
}:bool
get-fill-pattern-for-data-series:この ChartLayer のデータ系列の 1 つのプロットで使用する FillPattern を取得します。
public {ChartLayer.get-fill-pattern-for-data-series
data-series-index:int
}:FillPattern
get-inverse-data-mapping:この ChartLayerChartDataSeries の 1 つに対応する ChartInverseDataMapping オブジェクトを取得します。
public {ChartLayer.get-inverse-data-mapping
y-data:ChartDataSeries,
error-if-no-axes?:bool = true
}:#ChartInverseDataMapping
get-nearest-record-in-data:ChartDataSeries 内で指定の空間位置に最も近い Record を確認してください。
public {ChartLayer.get-nearest-record-in-data
x:Distance,
y:Distance,
data:ChartDataSeries,
mapping:ChartDataMapping,
x-axis-only?:bool = true
}:#Record
get-own-bounds:ローカル座標系におけるこの Shape の四角形のレンダリング境界を計算します。
public {ChartLayer.get-own-bounds dest:GRect = {GRect.empty}}:GRect
get-record-at-point:指定の位置に RecordChartDataSeries、および Shape があれば、それらを確認してください。
public {ChartLayer.get-record-at-point}:(record:#Record, data:#ChartDataSeries, shape:#Shape)
get-record-count:この ChartLayer に関連した Record の数を決定します。
public {ChartLayer.get-record-count}:int
handle-observer-message:監視対象のオブジェクトがメッセージを送信するときにこのメソッドを呼び出します。Observer はこのメソッドを実装して、変更が発生したときに処理を実行する必要があります。
protected {ChartLayer.handle-observer-message
sender:Observable,
message:any
}:void
maybe-create-x-axis:必要な場合には、この ChartLayer を表すのに適切な X 軸を作成します。
public {ChartLayer.maybe-create-x-axis
series-already-used:ChartDataSeriesSet
}:#ChartAxis
maybe-create-y-axis-for-series:必要な場合には、この ChartLayer の特定の ChartDataSeries を表すのに適切な Y 軸を作成します。
public {ChartLayer.maybe-create-y-axis-for-series
data-series-index:int,
series-already-used:ChartDataSeriesSet
}:#ChartAxis
non-keyword-init-arg: InitRestArgParser.process-rest-args で非キーワード引数が検出されると、呼び出されます。
public {ChartLayer.non-keyword-init-arg a:any}:void
note-color-associations-changed:この ChartLayerChartLayer.color-associations の内容が変更されたことを通知します。
public {ChartLayer.note-color-associations-changed}:void
note-y-axis-data-array-changed:この ChartLayerChartLayer.y-axis-data の順序が変更されたことを通知します。
public {ChartLayer.note-y-axis-data-array-changed}:void
remove-color-association:DataSeriesColorPairChartLayer.color-associations から削除します。
public {ChartLayer.remove-color-association
association:DataSeriesColorPair
}:void
remove-data-series:ChartDataSeriesChartLayer.y-axis-data から削除します。
public {ChartLayer.remove-data-series data:ChartDataSeries}:void
self-contains-point?:ポイントがこの Shape 内にあるかどうかを判定します。
public {ChartLayer.self-contains-point? x:Distance, y:Distance}:bool
self-intersects-polygon?:ポリゴンがこの Shape と交差するかどうかを判定します。
public {ChartLayer.self-intersects-polygon?}:bool
set-data-series-visibility:ChartLayer.y-axis-data の個々のメンバの表示を制御します。
public {ChartLayer.set-data-series-visibility
data-series-index:int,
visible?:bool
}:void
update-layout:この ChartLayer の内部レイアウトを更新します。
public abstract {ChartLayer.update-layout}:void
メソッド 継承 Shape: apply-rotation, apply-scale, apply-transformation, apply-translation, apply-translation-in-parent, constrain-own-layout-bounds, constrain-shape-layout-bounds, contains-point?, find-graphical-ancestor, fire-crossing-event, fire-in-child, get-display-context, get-down-orientation-in-shape-parent, get-graphical-root, get-gui-path, get-gui-path-to-child, get-local-device-pixel-size, get-origin-in-graphical-ancestor, get-origin-in-root, get-origin-in-shape-parent, get-origin-in-shape-root, get-own-bounds-in-shape-root, get-own-layout-bounds, get-right-orientation-in-shape-parent, get-shape-bounds, get-shape-bounds-in-shape-root, get-shape-layout-bounds, get-top-left-in-ancestor, get-transformation-to-shape-root, keyword-init-arg, option-change-notify, overdraw-for-selection, quantize-line-thickness, request-draw, request-draw-self, reset-transformation, set-rotation, set-scale, set-transformation, set-translation-in-parent, to-Graphic, transform-from-display-coordinates, transform-from-graphical-root-coordinates, transform-point-from-shape-root, transform-point-to-shape-root, transform-to-display-coordinates, transform-to-graphical-root-coordinates, transform-vector-from-shape-root, transform-vector-to-shape-root, transformation-changed, transformation-changing
メソッド 継承 Observer: observe, stop-observing
メソッド 継承 ShapeContainerBase: add, clear, clone-children, draw-shape-child, draw-shape-children, get-all-children-at-point, get-child-at-point, get-leaf-at-point, get-shape-root, note-attached, note-detaching, notify-option-children, on-drag-enter, on-pointer-enter, on-pointer-envelope-event, register-options, remove, set-shape-index, set-shape-index-after, set-shape-index-before, shape-container-fire-inferior-crossing-event, shape-container-handle-crossing, shape-container-pick-child, shape-container-pointer-enter-occurred, shape-container-pointer-leave-occurred
メソッド 継承 Visual: add-from-init-args, animate, change-cursor, clonable-appearance?, clone-appearance, clone-appearance-helper, find-test-children, get-focus-manager, get-layout-context, get-test-parent, get-test-property, get-text, get-view, maybe-fire-attach-event, maybe-fire-detach-event, note-caret-position, on-drag-leave, on-pointer-leave, pop-cursor, prepare-test-object, prepare-test-parent, push-cursor, quantize-width, refresh-style-options, release-key-focus, request-key-focus, scroll-to-include, test-record, test-run, xy-offset-to
メソッド 継承 GraphicOptions: any-to-Distance
メソッド 継承 GuiEventTarget: handle-delegate-event, handle-event, on-action, on-cancel-mode, on-command-changed, on-commit, on-composition-change-event, on-composition-result-event, on-context-menu-event, on-current-record-change-request, on-current-record-changed, on-destroy-notify, on-destroy-requested, on-drag-over, on-drag-pointer, on-drag-started, on-drop, on-end-composition-event, on-focus-event, on-focus-in, on-focus-out, on-gesture, on-gesture-begin, on-gesture-end, on-gesture-magnify, on-gesture-pan, on-gesture-rotate, on-gesture-swipe, on-gesture-tap, on-gesture-touch, on-grab-release, on-gui-event, on-input-method-event, on-inspection, on-key-event, on-key-press, on-pointer-button, on-pointer-crossing, on-pointer-event, on-pointer-motion, on-pointer-press, on-pointer-release, on-pointer-scroll, on-raw-key-event, on-raw-key-press, on-raw-key-release, on-reset, on-selectable-added, on-selectable-removed, on-selection-changed, on-selection-context-activated, on-selection-context-deactivated, on-selection-event, on-start-composition-event, on-start-event, on-stop-event, on-view-activate, on-view-deactivate, on-window-close, remove-event-handlers-for-event-class
メソッド 継承 DataBindingTarget: add-data-binding, get-data-binding, refresh-data-binding, remove-data-binding, unset-property, update-data-binding, validate-data-binding
メソッド 継承 EventTarget: accepts-event-class?, add-event-handler, event-handler-present?, remove-event-handler, verify-event
メソッド 継承 OptionListInterface: add-option, add-style-option, change-option-parent-notify, clone-options, get-option, get-option-by-name, local-add-notify, local-remove-notify, name-to-option-key, new-option-item, option-changed, option-lookup, option-lookup-here, option-propagate-notify, option-set?, propagate-option-change, remove-option, remove-style-option, remove-styles, set-option-by-name, set-style-option-by-name, unset-option-by-name, unset-style-option-by-name
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 InitRestArgParser: process-rest-args
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
protected {ChartLayer.default
x-axis-data:#ChartDataSeries = null,
...
}

新しい ChartLayer を作成します。

x-axis-data: ChartLayer.x-axis-data の初期値。この値は、指定されると、LayeredChart での自動 X 軸生成を変更するために使用されます。
...:
残余引数は、ChartLayer.color-associations に追加するために DataSeriesColorPair とするか、Shape.default が受け取るいずれかの引数 (EventHandler やオプションの初期化など) とすることができます。
... を使用して、次の 2 つのいずれかの方法でプロットされるデータ系列を初期化することもできます。
  • 1 つの RecordSet とそれに続けて該当する RecordSet からの任意の数のフィールド指定を、フィールドを命名する StringInterface として、あるいは RecordField オブジェクトとして渡すことができます。これらは ChartDataSeries オブジェクトに変換されて、ChartLayer.y-axis-data に追加されます。
  • ChartLayer.y-axis-data への直接追加のために、任意の数の ChartDataSeries オブジェクトを渡すこともできます。指定の ChartLayer 内のすべての Y データ系列は、同じ RecordSet を原点とする必要があることに注意してください。つまり、ChartDataSeries.sourceChartLayer.y-axis-data のすべてのメンバについて同一でなければなりません。

説明

ChartLayer は抽象クラスなので、このコンストラクタはサブクラスによってのみ使用されます。



プロパティ詳細
chart (フィールド)
public-get private-set ChartLayer.chart:#LayeredChart

この ChartLayer を含む LayeredChart (ある場合)。

説明

このプロパティは、ChartLayerLayeredChart に追加されるとすぐに設定されます。


color-associations (フィールド)
public constant ChartLayer.color-associations:{Array-of DataSeriesColorPair} ={new {Array-of DataSeriesColorPair}}

特定の色を特定の ChartDataSeries に関連付けるマッピングを提供します。

説明

DataSeriesColorPair を使用して、自動カラー選択プロセスをオーバーライドできます。ほとんどのアプリケーションは、すべての系列に使用されるカラー パレットをオーバーライドするために、Chart.color-palette を使用します。ただし、何かの理由で、個別のデータ系列でこれを制御したい場合、あるいは ChartLayer 間で異なる方法でこれを制御したい場合は、使用するメカニズムは ChartLayer.color-associations です。
DataSeriesColorPairChartLayer コンストラクタに提供できます。あるいは ChartLayer.append-color-associationChartLayer.remove-color-association、または直接操作を使用して、関連付けを変更できます。
この配列のどんな直接操作でも許されます。ただし、プロットと関連要素が再生成されるように、配列が変更された場合には、必ず ChartLayer.note-color-associations-changed を呼び出す必要があります。


{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{LayeredChart
    width = 15cm,
    height = 6cm,
    {LineLayer
        sample-records,
        "Wins",
        "Points",
        "Age",
        {DataSeriesColorPair
            {ChartDataSeries sample-records, "Wins"},
            "steelblue"
        }
    }
}


generate-y-axes? (アクセサ)
アクセサ public ChartLayer.generate-y-axes?:bool

この ChartLayer の Y 軸生成を考慮するかどうかを決定します。

説明

このメソッドは、自動軸生成プロセスによって内部的に呼び出されます。既定では、true が返されますが、一部のレイヤではこれがオーバーライドされます。たとえば、スタッキングをサポートするレイヤ (例については、LineLayer.stacking-mode を参照) では、スタッキング モードが ChartStackingMode.percent の場合、プロットは Y 位置について軸にまったく依存しないので、そのレイヤに対しては Y 軸の要求はありません。


legend-enabled? (非ローカル オプション)
public ChartLayer.legend-enabled?:bool

Chart の凡例作成を有効または無効にするために使用できる bool

説明

このオプションは通常、グラフ自体に設定されます。ただし、その意味は、個別の ChartLayer または PieSet によって解釈されます。つまり、個別のレイヤまたはセットのそれぞれに凡例項目の生成を有効または無効にできます。Chart において false に設定されている場合、レイヤでの値であるか、セットでの値であるかに関係なく、凡例はグラフに含められないことに注意してください。
このオプションを使用して、凡例の作成を禁止し、凡例を外部グラフィカル コンテナに配置する例については、Chart.create-legend を参照してください。

legend-enabled? 定義を代わりに LineLayer 定義の 1 つに移動して、どのように凡例のみに影響するかを確認してください。

例: 次の使用: legend-enabled?
{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{RecordGrid height = 6cm, record-source = sample-records}

{LayeredChart
    width = 15cm,
    height = 6cm,
    || Try moving this into one of the LineLayer definitions:
    legend-enabled? = false,
    group-y-axis-data-across-layers? = true,
    {LineLayer
        {ChartDataSeries sample-records, "Age"},
        x-axis-data = {ChartDataSeries sample-records, "Name"}
    },
    {LineLayer
        {ChartDataSeries sample-records, "Wins"}
    }
}


legend-entry-factory (非ローカル オプション)
public ChartLayer.legend-entry-factory:LegendEntryFactory

Chart の凡例の個別の凡例項目を生成するために使用されるファクトリ プロシージャ。

説明

legend-entry-factory を参照してください。


style-element (アクセサ)
アクセサ public ChartLayer.style-element:String

スタイリングの目的のための、この Visual の "要素" や "型" です。

説明

この実装によって Visual._style-elementの値が返されますが、通常は定数を返すためにオーバーライドされます。

オーバーライド

Visual のサブクラスのスタイルが他のオブジェクトと異なる場合、このゲッターは適切な文字列を返すようにオーバーライドされる必要があります。 慣例では,この文字列はクラス名または、オブジェクトを生成するマークアップの名前です。
オーバーライドでは、空の文字列でないかぎり、self._style-elementを返さなければなりません。
導入: バージョン 6.0


x-axis-data (アクセサ)
アクセサ public ChartLayer.x-axis-data:#ChartDataSeries
セッター public ChartLayer.x-axis-data:#ChartDataSeries

X 軸の自動生成に使用される ChartDataSeries

説明

このプロパティは、特定のデータ系列をその X 軸に使用するように、LayeredChart に指示するものです。既定では、データ値ではなく、レコード インデックスのみに基づいた X 軸が作成されます。
ChartLayer.x-axis-data を設定しても、そのレイヤのプロットが生成された軸に関連したものになることは保証されませんが、作成だけは行われます。軸マッピング プロセスの詳細については、LayeredChart.get-best-match-x-axis を参照してください。また、軸マッピング プロセスへの影響については、LayeredChart.axis-associations を参照してください。


y-axis-data (フィールド)
public constant ChartLayer.y-axis-data:{Array-of ChartDataSeries} ={new {Array-of ChartDataSeries}}

この ChartLayer でプロットされる ChartDataSeries

説明

この配列は通常、ChartLayer 実装のコンストラクタによって、あるいは ChartLayer.append-data-series または ChartLayer.remove-data-series によって初期化されます。ただし、配列の順序を直接変更することも許可されます。これを行った後、ChartLayer.note-y-axis-data-array-changed を呼び出して、プロット データが再計算されるようにしてください。配列は、他の方法では変更しないでください。

注意事項

標準実装はすべて、複数のデータ系列のプロットを可能にしています。複数のデータ系列の解釈はレイヤによって異なりますが、通常それらのデータ系列は重なっています。たとえば、BarLayer.stacking-mode (他のレイヤとも共有されるプロパティ) を使用すれば、連続した各データ系列をそれぞれ前のデータ系列にスタックすることができます。
1 つの ChartLayer 内でプロットされるすべてのデータ系列は、同一の RecordSet で発生したものでなければならないことに注意してください。つまり、ChartDataSeries.sourceChartLayer.y-axis-data のすべてのメンバについて同一でなければなりません。この制約を避けるには、複数の ChartLayer を使用します。





メソッド詳細
append-color-association (メソッド)
public {ChartLayer.append-color-association
association:DataSeriesColorPair
}:void

ChartLayer.color-associationsDataSeriesColorPair を追加します。

association: 追加する DataSeriesColorPair

説明

このメソッドは、特定の ChartDataSeries が常に指定された FillPattern を使用してプロットされるようにできます。詳細と例については、ChartLayer.color-associations を参照してください。

注意事項

同じデータ系列の関連付けが既に存在する場合は、エラーが発生します。


append-data-series (メソッド)
public {ChartLayer.append-data-series data:ChartDataSeries}:void

プロットされる ChartLayer.y-axis-dataChartDataSeries を追加します。

data: 追加される ChartDataSeries

説明

詳細については、ChartLayer.y-axis-data を参照してください。


compute-data-min-max (メソッド)
public {ChartLayer.compute-data-min-max}:(min:any, max:any)

data に関連した最小値と最大値を決定します。

data: 検証する ChartDataSeries。これは ChartLayer.y-axis-data のメンバである必要があります。

戻り値

最小値と最大値。非 null の値がデータに存在しない場合は、これらの値の両方が null であることに注意してください。それ以外の場合は、どちらも null ではありません。

説明

このメソッドは通常、ChartDataSeries.compute-min-max を呼び出すためにだけ実装されます。ただし、プロットが考慮されるように、計算を拡張できます。たとえば、スタッキング棒グラフを扱う場合、実際のスタック データの値が考慮されます。これが ChartDataSeries.compute-min-max ではなく、このメソッドを呼び出す理由です。


create-legend-entries (メソッド)
public {ChartLayer.create-legend-entries
container:{Array-of Graphic},
entries-already-created:DataSeriesColorPairSet
}:void

この ChartLayer に必要な凡例項目を作成します。

container: 作成された項目の追加先の配列。
entries-already-created: 既に作成されている凡例項目を追跡するために使用される DataSeriesColorPairSet。データ系列と FillPattern の組み合わせが既にこのセットに存在する場合、このメソッドはそれらを再作成しません。このメソッドがそれらを作成する場合は、それらをセットに追加します。

説明

このメソッドをオーバーライドすると、凡例生成を変更するのに役立ちます。ただし、legend-entry-factory を使用して、ファクトリ プロシージャを提供するのがより簡単で一般的です。このファクトリ プロシージャは、まだ存在しないそれぞれの凡例項目に対して ChartLayer.create-legend-entries によって呼び出されます。


detach (メソッド)
public {ChartLayer.detach}:void

この形状を親から切り離します。

説明

これは、意味的にはこの形状の親に対して ShapeContainerBase.remove を呼び出すのと同じです。
親を持たない形状に対して detach を呼び出しても効果はありません。


draw (メソッド)
public {ChartLayer.draw r2d:Renderer2d}:void

このオブジェクトの可視表現を描画します。

renderer2d: このオブジェクトを使用してそれ自身を描画する Renderer2d

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。


get-data-mapping (メソッド)
public {ChartLayer.get-data-mapping}:ChartDataMapping

この ChartLayerChartDataSeries の 1 つに対応する ChartDataMapping オブジェクトを取得します。

y-data: マッピングが有効になっている ChartDataSeries。このオブジェクトは ChartLayer.y-axis-data のメンバでなければなりません。

戻り値

このレイヤおよび指定されたデータ系列の ChartDataMapping オブジェクト。

説明

ChartDataMapping により、ChartDataMapping.get-position を使用して指定のレコードの空間位置を簡単に決定できます。これは一般的に、Shape オブジェクトをそのプロットの一部として位置付ける場合に、ChartLayer の実装によって使用されます。
返される位置は、座標内でプロット エリアに対して相対的であることに注意してください。下の例では、座標は ShapeChartLayer 自体に追加するためにそのまま使用されます。すべての ChartLayer がプロット エリアの原点を自身の原点としてもっているので、これは有効です。
座標を Chart に対して相対的としたい場合は、LayeredChart.plot-area.transformation.transform を使用してこれを実現できます。
ChartLayer.get-inverse-data-mapping も参照してください。

注意事項

このメソッドは、レイアウトがペンディングである場合、ある程度のグラフ レイアウト処理が即時に実行されます。データ マッピングは有効な軸がないと決定されないため、LayeredChart.ensure-axes-valid が常に呼び出されます。
グラフの軸またはこのレイヤのデータ系列を変更する後続の操作 (スタッキング モードを変更する操作など) は、ChartDataMapping オブジェクトを無効化することに注意してください。このオブジェクトを使用すると、意味のない結果が作成されます。最善の策は、これらのオブジェクトを保持しないで、必要になった時点でこのメソッドを用いてこれらのオブジェクトを取得することです。


例: ChartDataMapping を使用しての Shape のグラフへの追加
{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        {BarLayer
            sample-records,
            "Age",
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        },
        {LineLayer
            sample-records,
            "Wins"
        },
        {on ChartLayoutChanged do
            || Give big winners a gold diamond
            let constant layer:ChartLayer = chart.layers[1]
            let constant map:ChartDataMapping =
                {layer.get-data-mapping layer.y-axis-data[0]}


            let index:int = 0
            {for record in sample-records do
                {if record["Wins"] asa int >= 6 then
                    let constant (pos:Distance2d, y-was-null?:bool) =
                        {map.get-position record, index}
                    
                    {if not y-was-null? then
                        || Don't add shapes for records with null values.
                        let constant size:Distance =
                            3 * {sqrt 2} * {layer.get-display-context}.pixel-size
                        {layer.add
                            {RectangleShape
                                {GRect size, size, size, size},
                                translation = pos,
                                rotation = 45deg,
                                color = "gold",
                                tooltip =
                                    {Tooltip
                                        {format
                                            "%s got %d wins!",
                                            record["Name"],
                                            record["Wins"]
                                        }
                                    }
                            }
                        }
                    }
                }
                
                {inc index}
            }
        }
    }
}

{value chart}


get-data-series-from-shape (メソッド)
public abstract {ChartLayer.get-data-series-from-shape
shape:Shape
}:#ChartDataSeries

Shape に関連した ChartDataSeries を決定します (ある場合)。

shape: 検索する Shape

説明

ChartLayer.y-axis-data の要素を表すために、Shape がこの ChartLayer によって生成された場合は、このメソッドでその要素が判別され、該当するデータ系列が返されます。その他の場合は、null を返します。
ChartLayer をサブクラス化しようとする場合は、このメソッドを実装する必要があります。これは通常、生成された Shape のセットを追跡し、渡される Shape が既知の Shape のメンバであるかどうかを決定することにより実行されます。


get-data-series-visibility (メソッド)
public final {ChartLayer.get-data-series-visibility
data-series-index:int
}:bool

ChartLayer.y-axis-data の個々のメンバの表示を返します。

data-series-index: データ系列で、ChartLayer.y-axis-data へのインデックスとして表わされます。

戻り値

data-series-index が参照するデータ系列の現在の可視性。

説明

これは、このデータ系列の ChartLayer.set-data-series-visibility で最後に設定された値を返します。


get-fill-pattern-for-data-series (メソッド)
public {ChartLayer.get-fill-pattern-for-data-series
data-series-index:int
}:FillPattern

この ChartLayer のデータ系列の 1 つのプロットで使用する FillPattern を取得します。

data-series-index: 使用するデータ系列で、ChartLayer.y-axis-data へのインデックスとして表わされます。

戻り値

使用される FillPattern

説明

このメソッドは、ChartLayer.color-associations および LayeredChart とやりとりを行って、このデータ系列に適切な色を決定します。これは、ChartLayer の実装および凡例ファクトリーで使用され、各データ系列で使用される色を決定します。


get-inverse-data-mapping (メソッド)
public {ChartLayer.get-inverse-data-mapping
y-data:ChartDataSeries,
error-if-no-axes?:bool = true
}:#ChartInverseDataMapping

この ChartLayerChartDataSeries の 1 つに対応する ChartInverseDataMapping オブジェクトを取得します。

y-data: マッピングが有効になっている ChartDataSeries。このオブジェクトは ChartLayer.y-axis-data のメンバでなければなりません。
error-if-no-axes?:
y-data に一致する軸が見つからない場合 (LayeredChart.get-best-match-x-axis および LayeredChart.get-best-match-y-axis を参照)、ChartInverseDataMapping オブジェクトは作成されません。
これが起こり、error-if-no-axes? が true であると、エラーがスローされます。error-if-no-axes? が false の場合は、代わりに null が返されます。

戻り値

このレイヤおよび指定されたデータ系列の ChartInverseDataMapping オブジェクト (作成可能な場合)。null が返されるのは、y-data と一致する軸がない場合、および error-if-no-axes? が false の場合に限られます。

説明

ChartInverseDataMapping により、指定した空間位置に対応する X 値と Y 値を簡単に判断できます。たとえば、これを使用して、ユーザーの入力に応じて RecordSet 内でデータを追加したり、データを変更したりできます。
ChartInverseDataMapping.get-valuesLayeredChart の座標空間内に座標を必要とするので、以下の例のように、イベント ハンドラをグラフ自体にアタッチすると、これが与えられます。
ChartLayer.get-data-mapping も参照してください。

注意事項

このメソッドは、レイアウトがペンディングである場合、ある程度のグラフ レイアウト処理が即時に実行されます。データ マッピングは有効な軸がないと決定されないため、LayeredChart.ensure-axes-valid が常に呼び出されます。
グラフの軸またはこのレイヤのデータ系列を変更する後続の操作 (スタッキング モードを変更する操作など) は、ChartInverseDataMapping オブジェクトを無効化することに注意してください。このオブジェクトを使用すると、意味のない結果が作成されます。最善の策は、これらのオブジェクトを保持しないで、必要になった時点でこのメソッドを用いてこれらのオブジェクトを取得することです。
必ずしもグラフのすべての構成で完全な逆マッピングを作成できるわけではないことにも注意してください。スタッキングを使用するどのグラフでも (ChartStackingMode.stackedChartStackingMode.percent のいずれか)、X 軸専用 ChartInverseDataMapping が返されます。この場合、Y 値は null となります。


例: 次の使用: ChartInverseDataMapping
{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let bar-display:TextDisplay = {TextDisplay width = 4cm}}
{let line-display:TextDisplay = {TextDisplay width = 4cm}}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        {BarLayer
            sample-records,
            "Age",
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        },
        {LineLayer
            sample-records,
            "Wins"
        },
        {on e:PointerMotion do
            let layer:ChartLayer = chart.layers[0]
            let inverse-mapping:ChartInverseDataMapping =
                {non-null {layer.get-inverse-data-mapping layer.y-axis-data[0]}}
            let (x:any, y:any) = {inverse-mapping.get-values e.x, e.y}
            set bar-display.value = x & ", " & y

            set layer = chart.layers[1]
            set inverse-mapping =
                {non-null {layer.get-inverse-data-mapping layer.y-axis-data[0]}}
            set (x, y) = {inverse-mapping.get-values e.x, e.y}
            set line-display.value = x & ", " & y
        }
    }
}

{Table
    cell-border-width = 1pt,
    cell-border-color = FillPattern.silver,
    {row-prototype
        font-weight = FontWeight.bold,
        {text BarLayer (Age)},
        {text LineLayer (Wins)}
    },
    {row-prototype bar-display, line-display},
    {row-prototype
        {cell-prototype
            colspan = 2,
            chart
        }
    }
}


get-nearest-record-in-data (メソッド)
public {ChartLayer.get-nearest-record-in-data
x:Distance,
y:Distance,
data:ChartDataSeries,
mapping:ChartDataMapping,
x-axis-only?:bool = true
}:#Record

ChartDataSeries 内で指定の空間位置に最も近い Record を確認してください。

x: プロット エリア座標内での X 座標。
y: プロット エリア座標内での Y 座標。
data: 最も近いレコードが検索される ChartDataSeriesdata は、ChartLayer.y-axis-data のメンバである必要があります。
mapping: data に対応する ChartDataMapping。このオブジェクトは、ChartLayer.get-data-mapping を呼び出すことで取得できます。
x-axis-only?: true (既定値) の場合、レコードの Y 軸位置は考慮されません。そうでない場合は、総合位置が考慮されます。(グラフは反転できます。つまり、垂直軸が X 軸と見なされることを意味します。LayeredChart.flipped? を参照してください。)

戻り値

RecordSet にレコードがなかった場合は、最も近いレコードまたは null

説明

このメソッドでは、指定されたポイントに最も近い Record が検索されます。これは、指定されたポイントでの 形状に対応する Record のみを返す ChartLayer.get-record-at-point と対照的です。
「最も近い」の定義は、x-axis-only? に基づきます。既定では、X 軸の値のみに基づきます。x-axis-only? を使用して、両方の座標が考慮されるように、この動作を変更できます。LayeredChart.flipped? の値によっては、これは X 座標または Y 座標を意味する場合があることに注意してください。
x および y として渡されるポイントは、プロット エリアに関連して座標内に配置される必要があります。Chart に関連した座標がある場合、イベント ハンドラをグラフ自体に使用する場合のように、これらの座標をプロット エリアの座標系に変換する必要があります。これを行う方法の例については、以下を参照してください。

注意事項

これに関するその他の手法については、以下を参照してください。


{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let x-axis-only?:bool = true}
{let record-display:TextDisplay = {TextDisplay}}
{let value-display:TextDisplay = {TextDisplay}}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        {ScatterLayer
            sample-records,
            "Wins",
            x-axis-data = {ChartDataSeries sample-records, "Age"}
        },
        {on e:PointerMotion do
            || Transform coordinates from chart into one of its
            || children -- the plot area:
            let constant point-in-plot-area:Distance2d =
                {chart.plot-area.transformation.inverse-transform-point
                    {Distance2d e.x, e.y}
                }

            let layer:ChartLayer = chart.layers[0]
            let mapping:ChartDataMapping =
                {layer.get-data-mapping layer.y-axis-data[0]}
            let inverse-mapping:ChartInverseDataMapping =
                {non-null {layer.get-inverse-data-mapping layer.y-axis-data[0]}}
            let record:Record =
                {non-null
                    {layer.get-nearest-record-in-data
                        point-in-plot-area.x,
                        point-in-plot-area.y,
                        layer.y-axis-data[0],
                        mapping,
                        x-axis-only? = x-axis-only?
                    }
                }
            set record-display.value =
                {format
                    "Name: %s, points: %s, wins: %s, age: %s",
                    record["Name"],
                    record["Points"],
                    record["Wins"],
                    record["Age"]
                }

            let (x:any, y:any) = {inverse-mapping.get-values e.x, e.y}
            set value-display.value = x & ", " & y
        }
    }
}

{Table
    cell-border-width = 1pt,
    cell-border-color = FillPattern.silver,
    {row-prototype
        font-weight = FontWeight.bold,
        {text get-nearest-record-in-data results},
        {text ChartInverseDataMapping results}
    },
    {row-prototype record-display, value-display},
    {row-prototype
        {CheckButton
            label = "find nearest using x axis only?",
            value = x-axis-only?,
            {on ValueFinished at cb:CheckButton do
                set x-axis-only? = cb.value
            }
        },
        {CheckButton
            label = "chart is flipped?",
            value = chart.flipped?,
            {on ValueFinished at cb:CheckButton do
                set chart.flipped? = cb.value
            }
        }
    },
    {row-prototype
        {cell-prototype
            colspan = 2,
            chart
        }
    }
}


get-own-bounds (メソッド)
public {ChartLayer.get-own-bounds dest:GRect = {GRect.empty}}:GRect

ローカル座標系におけるこの Shape の四角形のレンダリング境界を計算します。

dest: データを返すために使用されるオプションの GRect オブジェクト。

戻り値

境界を含む GRect オブジェクト。これは、常に dest と同じオブジェクトになります。この GRect は正しい形式である必要があります。つまり、次の条件が true でなければなりません。 -dest.lextent <= dest.rextent and -dest.ascent <= dest.descent

説明

返された境界は、このオブジェクトによって描画されるすべてのピクセルをカバーしている必要があります。ただし、このオブジェクトのすべての子を含んでいません

注意事項

レンダリング境界 (get-own-bounds) とレイアウト境界 (get-own-layout-bounds) は、通常似ていますが、同じではありません。特に、レンダリング境界は非常に包括的ですが、レイアウト境界はそれぞれが整然と隣接するため、Shape を厳密に記述しなければならなりません。

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。データを返すには、dest パラメータを使用する必要があります。


get-record-at-point (メソッド)
public {ChartLayer.get-record-at-point}:(record:#Record, data:#ChartDataSeries, shape:#Shape)

指定の位置に RecordChartDataSeries、および Shape があれば、それらを確認してください。

x: この ChartLayer の相対 X 座標。
y: この ChartLayer の相対 Y 座標。

戻り値

ポイントでの RecordChartDataSeries、および Shape。この位置に Shape が配置されたデータ系列がない場合、すべての値は null になります。そうでない場合は、すべて非 null になります。

説明

渡されるポイントは、この ChartLayer の座標系に対して相対的である必要があります。この ChartLayertransformation を変更しない限り、これは、プロット エリアの座標系と同じになります。Chart 相対座標のプロット エリア相対座標への変換を含む例については、次を参照してください。
ある意味では、これは単に便利なメソッドです。次のアルゴリズムが使用されています。
  1. ShapeContainerBase.get-leaf-at-pointを使用して提供されたポイントで Shape を見つけます。
  2. ChartLayer.get-data-series-from-shape を使用してこの形状に関連した ChartDataSeries を見つけます。
  3. ChartLayer.get-nearest-record-in-data を使用してポイントに最も近い Record をこの系列から見つけます。
このメソッドの可能な代替方法の 1 つとして、形状ファクトリ (BarLayer.shape-factory など) を使用して Shape 生成をオーバーライドし、必要とするデータをすべて各形状の Visual.user-data オプションに格納することができます。次に指定ポイントでこのデータを取得することは、ShapeContainerBase.get-child-at-point を呼び出して、返される Shapeuser-data 値を検証することと同様に簡単になります。

注意事項

これに関するその他の手法については、以下を参照してください。

このグラフ内の線上でマウス ポインタを移動し、データに関する情報を表示します。この情報は、ChartLayer.get-record-at-point を使用して実行時に検出されます。

例: 次の使用: ChartLayer.get-record-at-point
{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let display:TextDisplay = {TextDisplay}}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        {LineLayer
            stroke-thickness = 2pt,
            sample-records,
            "Age",
            "Points",
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        },
        {on e:PointerMotion do
            || Transform coordinates from chart into one of its
            || children -- the plot area:
            let constant point-in-plot-area:Distance2d =
                {chart.plot-area.transformation.inverse-transform-point
                    {Distance2d e.x, e.y}
                }

            let constant layer:ChartLayer = chart.layers[0]
            let (record:#Record, data:#ChartDataSeries, shape:#Shape) =
                {layer.get-record-at-point
                    point-in-plot-area.x,
                    point-in-plot-area.y
                }

            set display.value =
                {if-non-null record then
                    {format
                        "Name: %s, points: %s, wins: %s, age: %s   " &
                        "(from series %s)",
                        record["Name"],
                        record["Points"],
                        record["Wins"],
                        record["Age"],
                        data.field.caption
                    }
                 else
                    ""
                }
        }
    }
}

{VBox
    hstretch? = true,
    display,
    chart
}


get-record-count (メソッド)
public {ChartLayer.get-record-count}:int

この ChartLayer に関連した Record の数を決定します。

戻り値

Record 数。

説明

ChartLayer.y-axis-data の要素はすべて同じ RecordSet を使用しなければならないので、これは、ChartLayer.y-axis-data の最初の要素のレコード カウント (ChartLayer.y-axis-data が空の場合は 0) を返すように実装されます。


handle-observer-message (メソッド)
protected {ChartLayer.handle-observer-message
sender:Observable,
message:any
}:void

監視対象のオブジェクトがメッセージを送信するときにこのメソッドを呼び出します。Observer はこのメソッドを実装して、変更が発生したときに処理を実行する必要があります。

sender: 変更があった Observable オブジェクトです。
message: これは、Observer からの変更に関する詳細情報が含まれています。詳細情報がない場合は NULL になります。


maybe-create-x-axis (メソッド)
public {ChartLayer.maybe-create-x-axis
series-already-used:ChartDataSeriesSet
}:#ChartAxis

必要な場合には、この ChartLayer を表すのに適切な X 軸を作成します。

series-already-used: X 軸を作成するために既に使用されたすべての ChartDataSeries を含むセット。このオブジェクトは、複数の ChartLayersChartLayer.x-axis-data として同じ系列が指定された場合に、同一軸を複数作成しないようにするために使用されます。

戻り値

LayeredChart に追加される ChartAxis、あるいはない場合は null

説明

このメソッドは、自動軸生成プロセスによって内部的に呼び出されます。既定では、ChartLayer.x-axis-data が非 null である場合にのみ、軸が作成されます。この場合、series-already-used がチェックされ、ChartLayer.x-axis-data が存在しなければ、このメソッドで新規 ChartAxis が作成されます。

注意事項

このメソッドは、作成される軸の性質を変更するようにオーバーライドできます。たとえば、BarLayer はこのメソッドをオーバーライドして、適切なタイプ (EnumeratedBarChartAxis または DefaultBarChartAxis) の軸が作成されるようにします。
必要であれば、実装で series-already-used を無視することができます。無視しなければ、このメソッドの実装で系列をその使用時にセットに追加する必要があります。
ChartLayer.maybe-create-y-axis-for-series と対照的に、このメソッドの呼び出しで X 軸が作成されない場合、LayeredChart には X 軸を作成するメカニズムはありません。


maybe-create-y-axis-for-series (メソッド)
public {ChartLayer.maybe-create-y-axis-for-series
data-series-index:int,
series-already-used:ChartDataSeriesSet
}:#ChartAxis

必要な場合には、この ChartLayer の特定の ChartDataSeries を表すのに適切な Y 軸を作成します。

data-series-index: Y 軸を作成するデータ系列を示す ChartLayer.y-axis-data のインデックス。
series-already-used: Y 軸を作成するために既に使用されたすべての ChartDataSeries を含むセット。このオブジェクトは、複数の ChartLayersChartLayer.y-axis-data に同じ系列が存在する場合に、同一軸を複数作成しないようにするために使用されます。

戻り値

LayeredChart に追加される ChartAxis、あるいはない場合は null

説明

このメソッドは、自動軸生成プロセスによって内部的に呼び出されます。既定では、常に null が返され、LayeredChart に対する作成ロジックが延期されます。

注意事項

このメソッドは、作成される軸の性質を変更するようにオーバーライドできます。
必要であれば、実装で series-already-used を無視することができます。無視しなければ、このメソッドの実装で系列をその使用時にセットに追加する必要があります。
ChartLayer.maybe-create-x-axis と対照的に、このメソッドの呼び出しで Y 軸が作成されない場合は、LayeredChart は、必要に応じて独自のシステムを使用して Y 軸を生成します。


non-keyword-init-arg (メソッド)
public {ChartLayer.non-keyword-init-arg a:any}:void

InitRestArgParser.process-rest-args で非キーワード引数が検出されると、呼び出されます。

説明

Visual によるこのメソッドの実装では、最初にこのメソッドへの入力値をオブジェクトに関連するメタデータとして解釈を試みます。たとえば、オブジェクトに関連する EventHandlerDataBinding を認識してから、これらをアタッチするための適切な手順を実行することになります。
メタデータとして認識不可能な入力値は、Visual に追加される内容であると解釈され、Visual.add-from-init-args に渡されます。

オーバーライド

オブジェクトに関連付けられた追加のメタデータも受け入れるようにするには、このメソッドをオーバーライドします。実装では通常、解釈に失敗した入力値でスーパー実装が呼び出されるようにします。


note-color-associations-changed (メソッド)
public {ChartLayer.note-color-associations-changed}:void

この ChartLayerChartLayer.color-associations の内容が変更されたことを通知します。

説明

任意の方法による ChartLayer.color-associations の直接操作が許可されます。その内容が変更された時に、このメソッドを呼び出すだけです。

この例は、プロットのための色としての Pixmap の使用法を示すとともに、ChartLayer.note-color-associations-changed の使用法を示しています。

{import * from CURL.GUI.CHARTS}
{import * from CURL.GRAPHICS.IMAGEFILTER}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        {BarLayer
            sample-records,
            "Age",
            "Points",
            {DataSeriesColorPair
                {ChartDataSeries sample-records, "Age"},
                FillPattern.black
            },
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        }
    }
}

{value chart}

|| Scale the pixmap to a reasonable size:
{let constant pixmap:Pixmap =
    {filter-pixmap
        scale,
        {Pixmap.from-url
            {url "curl://install/docs/default/images/curtain.jpg"}
        },
        scale = 25%,
        filter-mode = "linear"
    }
}

Color association:

{DropdownList
    "black",
    "steelblue",
    "purple",
    "orange",
    pixmap,
    list-item-creation-proc =
        {proc {val:any}:ListItem
            {return
                {ListValueItem
                    value = val,
                    {type-switch val
                     case p:Pixmap do
                        {RectangleGraphic
                            fill-color = val,
                            width = p.width * 1px,
                            height = p.height * 1px
                        }
                     else
                        {RectangleGraphic
                            fill-color = val,
                            width = 50pt,
                            height = 10pt
                        }
                    }
                }
            }
        },
    {on ValueChanged at ddl:DropdownList do
        let constant layer:ChartLayer = chart.layers[0]
        set layer.color-associations[0] =
            {DataSeriesColorPair
                layer.color-associations[0].data-series,
                ddl.value asa FillPattern
            }
        {layer.note-color-associations-changed}
    },
    value="black"
}


note-y-axis-data-array-changed (メソッド)
public {ChartLayer.note-y-axis-data-array-changed}:void

この ChartLayerChartLayer.y-axis-data の順序が変更されたことを通知します。

説明

ChartLayer.y-axis-data は、既存の要素の順序を変更する場合にのみ直接操作できます。これを行う場合、このメソッドを呼び出して、ChartLayer がその要素を再生成できるようにする必要があります。


{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let chart:LayeredChart =
    {LayeredChart
        width = 15cm,
        height = 6cm,
        {BarLayer
            sample-records,
            "Age",
            "Points",
            x-axis-data = {ChartDataSeries sample-records, "Name"}
        }
    }
}

{value chart}

{CommandButton
    label = "Switch order",
    {on Action do
        let constant layer:ChartLayer = chart.layers[0]
        let constant temp:ChartDataSeries = layer.y-axis-data[0]
        set layer.y-axis-data[0] = layer.y-axis-data[1]
        set layer.y-axis-data[1] = temp

        || Here is the important method call:
        {layer.note-y-axis-data-array-changed}
    }
}


remove-color-association (メソッド)
public {ChartLayer.remove-color-association
association:DataSeriesColorPair
}:void

DataSeriesColorPairChartLayer.color-associations から削除します。

association: 削除する DataSeriesColorPairassociation は、ChartLayer.color-associations のメンバである必要があります。そうでない場合、エラーが発生します。

説明

色の関連付けの詳細およびその使用例については、ChartLayer.color-associations を参照してください。


remove-data-series (メソッド)
public {ChartLayer.remove-data-series data:ChartDataSeries}:void

ChartDataSeriesChartLayer.y-axis-data から削除します。

data: 削除される ChartDataSeries。このオブジェクトは、ChartLayer.y-axis-data のメンバである必要があります。そうでない場合、エラーが発生します。

説明

詳細については、ChartLayer.y-axis-data を参照してください。


self-contains-point? (メソッド)
public {ChartLayer.self-contains-point? x:Distance, y:Distance}:bool

ポイントがこの Shape 内にあるかどうかを判定します。

x: 点の X 座標。
y: 点の Y 座標。

戻り値

この Shape が (xy) を含む場合は、true

説明

ポイントは、このオブジェクトのローカル座標系にあります。このメソッドは、その子を考慮しません。

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。このメソッドは、PointerMotion などのマウス イベントをこのオブジェクトにいつ送信するかなどを決定します。
通常は、このメソッドを実装して、ポイントが形状の境界内にあるかどうかだけでなく、ポイントが形状のレンダリングされたプリミティブ内にあるどうかを確認する必要があります。このメソッドは必要なメトリックを使用して自在に実装できます。


self-intersects-polygon? (メソッド)
public {ChartLayer.self-intersects-polygon?}:bool

ポリゴンがこの Shape と交差するかどうかを判定します。

polygon: この形状のローカル座標空間にポリゴンを記述するポイント セットを含むオブジェクト。このポリゴンは必ず凸型であり、反時計回りのワインディング順に従います。

説明

このメソッドは、ポイントではなく領域を処理する点を除けば、Shape.self-contains-point? とよく似ています。主に領域ベースの選択をサポートするために使用されますが、直接呼び出すこともできます。

オーバーライド

Shape をサブクラス化する場合は、このメソッドをオーバーライドする必要があります。子を考慮する必要はありません。
通常は、このメソッドを実装して、領域が形状の境界内にあるかどうかだけでなく、領域が形状のレンダリングされたプリミティブと交差するかどうかを確認する必要があります。このメソッドは、必要なメトリックを使用して自在に実装できます。このメソッドの実装が Shape.self-contains-point? と調和しない場合は、このオブジェクトを選択すると予期しない結果になります。
選択機能を使用しない場合は、このメソッドを単純に false を返すように実装できます。


set-data-series-visibility (メソッド)
public {ChartLayer.set-data-series-visibility
data-series-index:int,
visible?:bool
}:void

ChartLayer.y-axis-data の個々のメンバの表示を制御します。

data-series-index: 変更するデータ系列で、ChartLayer.y-axis-data へのインデックスとして表わされます。
visible?: data-series-index によって参照されるデータ系列が表示されない場合は、false です。

説明

これは、凡例メンバや既存の系列の色を変更せずにデータの可視性を制御する場合に役立ちます。この実装は ChartLayer サブクラスによって実行されます。標準グラフ レイヤは Shape.visible? を使用して可視性を制御します。独自のサブクラス内でこのメソッドを実装する場合、必ずスーパークラスの実装を呼び出す必要があります。


例: ChartLayer.set-data-series-visibility の使用
{import * from CURL.GUI.CHARTS}
{import * from CHARTS-DOC,
    location = "../docstring-support/gui/charts-doc.scurl"
}

{let chart:LayeredChart =
    {LayeredChart
        width = 12cm,
        height = 6cm,
        {LineLayer
            sample-records,
            "Age",
            "Points",
            "Height",
            x-axis-data = {ChartDataSeries sample-records, "Name"},
            symbols-at-data-points? = true
        }
    }
}

{value chart}

{CheckButton
    label = "Show Age?",
    value = true,
    {on ValueFinished at cb:CheckButton do
        let layer:ChartLayer = chart.layers[0]
        {layer.set-data-series-visibility 0, cb.value}
    }
}

{CheckButton
    label = "Show Points?",
    value = true,
    {on ValueFinished at cb:CheckButton do
        let layer:ChartLayer = chart.layers[0]
        {layer.set-data-series-visibility 1, cb.value}
    }
}

{CheckButton
    label = "Show Height?",
    value = true,
    {on ValueFinished at cb:CheckButton do
        let layer:ChartLayer = chart.layers[0]
        {layer.set-data-series-visibility 2, cb.value}
    }
}


update-layout (メソッド)
public abstract {ChartLayer.update-layout}:void

この ChartLayer の内部レイアウトを更新します。

説明

これは LayeredChart.update-layout から呼び出されます。ChartLayer の実装では、このメソッドを使用して、プロット形状が再生成され、レイヤに追加されます。ChartLayer をサブクラス化しようとする場合、データを表すためにさまざまな Shape を作成し、ChartLayer.add を使用してレイヤに追加するためには、このメソッドをオーバーライドする必要があります。