aiCharts : aiChartsライブラリのヒント

注意:このページはaiChartsライブラリの上級者向けの内容を掲載しています。下記に記されているクラスについてのすべての内容はaiCharts文書に記されています。必要に応じて参照してください。

aiChartsライブラリのスピードアップについて

  • たくさんのデータがあるものを操作している場合、次のコードを使ってみてください:ChartPointCollection.beginUpdate()/endUpdate() (xxx.setData メソッドはデフォルトで使用しています) これでChartAreaはbeginUpdate()からendUpdate()までの間を自動的にアップデートしなくなります。
  • 以前aiChartsで使用したインスタンスを再使用してみてください。これでガーベッジコレクタが不要なクリーンアップをしなくなります。
  • ChartAxisの範囲が分かっている場合、以下のコードでセットしてみてください:ChartAxisScale.setRange()/setDateRange()/setMinimum()/setMaximum()
  • 「hit testing」は本当に必要なときのみ使用してください。
  • データポイントに対してラベルを必要としない場合は「Line」チャートタイプではなく「FastLine」チャートタイプを使用してください。

軸ラベルの振る舞いについて

通常、ChartAxisにラベルを表示させるには2通りの方法があります。

ラベルを手動で追加する

ChartAxisはチャートのラベルをChartAxis.getCustomLabels()で表示します。返ってきたコレクションに対して自分の軸ラベルを追加します。カスタムラベルのテキストにフォーマットは適応されません。カスタムラベルのみを表示させる場合、自動ラベルを以下のコードで非表示にできます:ChartAxis.setLabelsMode(ChartAxis.LabelsMode.NoLabels)

自動ラベルを生成する

こちらがデフォルトのモードで、ChartAxisは自動的に最も適したラベルの付け方を決定します。自動ラベルの生成は以下のパラメータに左右されます。

  1. ChartAxis.setValueType()/getValueType():軸のデータタイプを特定します。軸の範囲計算、ラベル間隔、グリッド間隔などに影響します。
  2. ChartAxis.getLabelsMode()/setLabelsMode():ラベルを生成するのに使われているアルゴリズムを見分けます。
    • NoLabels:自動ラベル生成を無効にします。このセッティングは上記に記載してある手動ラベル作成で使用されています。
    • RangeLabels:軸の範囲や間隔に合わせてラベルが生成されます。
    • SeriesLabels:実際にSeriesに追加されたChartPointsに対応したラベルが生成されます。ラベルの文字はChartPoint.setAxisLabel で適用されるか ChartPoint.getx()/setX() で生成されます。
    • HybridLabels:SeriesLabelsとほぼ同じですが、生成した後にラベルはChartAxis.getScale().getVisibleInterval() と合うようにフィルタをかけられます。
  3. ChartAxis.getScale():ChartAxisScaleのインスタンスを表示し、間隔の量の調整や距離の間隔、グリッドの間隔などをAPIに検討させます。
    • getDesiredIntervalCount()/setDesiredIntervalCount():希望する間隔の数を指定します。実際の間隔の数はgetMargin()/setMargin()で設定された余白に左右されます。
    • setInterval():個別に軸の値を設定します。ふつうChartAxis.ValueType.Date データ型と共に使用されます。間隔が設定された後はDesiredIntervalCountのプロパティは無視されます。
  4. ChartAxis.setFormat()/getFormat():ラベルの書式を指定します。aiChartsは以下の書式を実装しています。:NumberFormat(DecimalFormat/ChoiceFormat), DateFormat (SimpleDateFormat) and MessageFormat (via single-value-array)

チャートタイプの互換性

注意:この内容は複数のseriesが合成されたareaに適応されます。

ChartSeries互換性チェックの間、ChartAreaは表示するチャートのタイプを決定し、互換性のないseriesを持つチャートは描かれません。互換性はChartType.IsCompatible()でダブルチェックできます。同じようにカスタムチャートタイプの互換性もチェックできます。デフォルトの互換性ルールは以下の通りです。

  • 2つのチャートで、座標のシステムの互換性がない場合は互換性がないと判断されます。
  • 座標を必要としないチャートタイプはその他の座標が必要なタイプのチャートと互換性がありません。
  • 回転されたチャートタイプ(横棒・積み上げ横棒)はお互いとのみ互換性があります。
  • 積み上げ100%タイプのチャートの互換性はお互いのみになります。