新しいチャート

Chart.js 2.0では、各データセットにコントローラの概念が導入されています。スケールのように、新しいコントローラは必要に応じて書き込むことができます。

Chart.controllers.MyType = Chart.DatasetController.extend({

});


// Chart.js APIを使用して、グラフの新しいインスタンスを作成できるようになりました
new Chart(ctx, {
    // これはコンストラクタが登録された場所を指す文字列です。つまり、Chart.controllers.MyType
    type: 'MyType',
    data: data,
    options: options
});

データセットコントローラインタフェース

データセットコントローラは、次のインターフェイスを実装する必要があります。

{
    // データセットの各データに対して要素を作成します。 dataset.metaDataとしてデータセット上の配列に要素を格納します
    addElements: function() {},

    // データの指定されたインデックスに単一要素を作成し、その状態をリセットします。
    addElementAndReset: function(index) {},

    // データセットの表現を描画する。
    // @param ease : 指定されている場合、この数値は要素をどれだけ遷移させるかを表します。提供されているコントローラのどれかでdraw()の実装を参照して、これをどのように使うべきか見てください。
    draw: function(ease) {},

    // 指定された要素からマウスオーバースタイルを削除します
    removeHoverStyle: function(element) {},

    // 指定された要素にマウスオーバースタイルを追加します
    setHoverStyle: function(element) {},

    // 新しいデータに応答して要素を更新する
    // @param reset : trueの場合、最終的な値までアニメーションできるようにするため、要素をリセット状態にします
    update: function(reset) {},
}

次のメソッドは、派生データセットコントローラによってオーバーライドすることができます。

{
    // コントローラを初期化する
    initialize: function(chart, datasetIndex) {},

    // このコントローラによって表されるデータセットがスケールにリンクされていることを確認します。単一スケールの鶏頭図とドーナッツコントローラではhelpers.noopにオーバーライドされます。
    linkScales: function() {},

    // 更新がトリガされたときにメインチャートコントローラによって呼び出されます。デフォルトの実装では、要素を変更および作成するデータポイントの数が適切に処理されます。
    buildOrUpdateElements: function() {}
}

既存のグラフタイプを拡張する

既存のコントローラタイプを拡張または交換するのは簡単です。組み込み型のコンストラクタを自分のものに置き換えるだけです。

組み込みコントローラタイプは次のとおりです。

  • Chart.controllers.line
  • Chart.controllers.bar
  • Chart.controllers.radar
  • Chart.controllers.doughnut
  • Chart.controllers.polarArea
  • Chart.controllers.bubble

たとえば、バブルチャートから拡張された新しいチャートタイプを取得するには、次のようにします。

// 'derivedBubble'のデフォルト設定をバブルのデフォルトと同じに設定します。
// Chart.defaults[chartType]を実行してデフォルトを探します
// デフォルトが存在しない場合はバグが存在するようです
Chart.defaults.derivedBubble = Chart.defaults.bubble;

// Chart.controllers.bubble.extend({ extensions here })を使用することをおすすめします。
var custom = Chart.controllers.bubble.extend({
    draw: function(ease) {
        // 最初にsuperメソッドを呼び出す
        Chart.controllers.bubble.prototype.draw.call(this, ease);

        // このデータセットに対してカスタム描画を行うことができます。ここでは、各データセットの最初のポイントの周りに赤いボックスを描画します
        var meta = this.getMeta();
        var pt0 = meta.data[0];
        var radius = pt0._view.radius;

        var ctx = this.chart.chart.ctx;
        ctx.save();
        ctx.strokeStyle = 'red';
        ctx.lineWidth = 1;
        ctx.strokeRect(pt0._view.x - radius, pt0._view.y - radius, 2 * radius, 2 * radius);
        ctx.restore();
    }
});

// コントローラを格納して、チャート初期化ルーチンがChart.controllers[type]からコントローラを探し出せるようにします。
Chart.controllers.derivedBubble = custom; 

// 新しいチャートタイプを作成して使用できるようになりました
new Chart(ctx, {
    type: 'derivedBubble',
    data: data,
    options: options,
});

棒グラフコントローラ

棒グラフコントローラには、知っておくべき特別なプロパティがあります。棒の幅を正しく計算するには、コントローラは棒に割り当てるデータセットの数を決定する必要があります。
これを行うために、棒グラフコントローラは、初期化の間、データセットにプロパティ`bar`を添付します。置換または更新された棒グラフコントローラを作成する場合は、同じ操作を行う必要があります。これにより、通常の棒グラフと新しい派生棒グラフがシームレスに動作するようになります。

results matching ""

    No results matching ""