# 3.x マイグレーションガイド

Chart.js 3.0では、いくつかの破壊的変更が導入されています。Chart.js 2.0は2016年4月にリリースされました。それ以降、Chart.jsは人気と機能が向上するにつれて、チャートライブラリのより良い作成方法についていくつかの教訓を得てきました。パフォーマンスの向上、新機能の提供、および保守性の向上のためには、後方互換性を破る必要がありましたが、メリットに値する場合のみそうすることを目指しました。v3の主なハイライトには以下が含まれます。

  • Webワーカーによるデータパースのスキップとチャートの並列レンダリング機能を含む、大幅なパフォーマンスの向上
  • より良いデフォルト設定による、追加の設定可能性とスクリプト可能なオプション
  • 完全に書き直されたアニメーションシステム
  • 多数のバグ修正を含む、書き直されたフィラープラグイン
  • GitBookからVuepressへのドキュメント移行
  • TypeDocによって生成および検証されたAPIドキュメント
  • CSSインジェクションはもうありません
  • 多数のバグ修正
  • ツリーシェイキング

#エンドユーザーのマイグレーション

# セットアップとインストール

  • 配布ファイルはすべて小文字になりました。例:dist/chart.js
  • Chart.jsはChart.bundle.jsChart.bundle.min.jsを提供しなくなりました。これらのビルドを使用していた場合、Chart.jsを設定するための推奨方法の詳細については、インストール統合のドキュメントを参照してください。
  • momentはnpm依存関係として指定されなくなりました。timeまたはtimeseriesスケールを使用している場合は、使用可能なアダプター (新しいウィンドウで開きます)と対応する日付ライブラリのいずれかを含める必要があります。ビルドからmomentを除外する必要はもうありません。
  • 提供されたキャンバス/コンテキストが既に使用されている場合、Chartコンストラクターはエラーをスローします。
  • Chart.js 3はツリーシェイク可能です。そのため、プロジェクトでnpmモジュールとして使用していて、この機能を利用したい場合は、使用したいコントローラー、要素、スケール、プラグインをインポートして登録する必要があります。インポートできるすべてのアイテムのリストについては、統合を参照してください。スクリプトタグを介して、またはauto登録パスを介してnpmモジュールとしてChart.jsをインポートする場合、registerを呼び出す必要はありません。この場合、ツリーシェイキングのメリットは得られません。コンポーネントの登録例を以下に示します。
import { Chart, LineController, LineElement, PointElement, LinearScale, Title } from `chart.js`
Chart.register(LineController, LineElement, PointElement, LinearScale, Title);
const chart = new Chart(ctx, {
    type: 'line',
    // data: ...
    options: {
        plugins: {
            title: {
                display: true,
                text: 'Chart Title'
            }
        },
        scales: {
            x: {
                type: 'linear'
            },
            y: {
                type: 'linear'
            }
        }
    }
})

# チャートの種類

  • horizontalBarチャートの種類が削除されました。水平方向のバーチャートは、新しいindexAxisオプションを使用して設定できます。

# オプション

Chartコンストラクターに渡される設定オプションに多くの変更が加えられました。これらの変更については、以下に説明します。

# 一般的な変更

  • インデックス可能なオプションはループするようになりました。backgroundColor: ['red', 'green']は、データポイントが2つより多い場合、「赤」/「緑」が交互に表示されます。
  • オブジェクトデータの入力プロパティは自由に指定できるようになりました。詳細については、データ構造を参照してください。
  • ほとんどのオプションは、デフォルトとマージする代わりに、プロキシを使用して解決されます。さまざまなコンテキストでさまざまな解決ルートを簡単に有効にすることに加えて、スクリプト可能なオプションで他の解決済みオプションを使用できます。
    • オプションは、特に理由がない限り、デフォルトでスクリプト可能でインデックス可能です。
    • スクリプト可能なオプションは、同じコンテキスト内の他のオプションにアクセスするためのオプションレゾルバーを2番目のパラメーターとして受け取ります。
    • 一致が見つからない場合は、上位スコープに解決されます。詳細については、オプションを参照してください。

# 特定の変更

  • elements.rectangleelements.barになりました。
  • hover.animationDurationanimation.active.durationで設定されるようになりました。
  • responsiveAnimationDurationanimation.resize.durationで設定されるようになりました。
  • 極座標エリアのelements.arc.angleは、ラジアンではなく度数で設定されるようになりました。
  • 極座標エリアのstartAngleオプションはRadarと一致するようになり、0は上部にあり、値は度数です。デフォルトは-½πから0に変更されました。
  • ドーナツチャートのrotationオプションは度数になり、0は上部になります。デフォルトは-½πから0に変更されました。
  • ドーナツチャートのcircumferenceオプションは度数になりました。デフォルトはから360に変更されました。
  • ドーナツチャートのcutoutPercentagecutoutに名前が変更され、数値としてピクセル、文字列としてパーセント(末尾に%)を受け入れます。
  • scaleオプションはoptions.scales.r(または他のスケールID、axis: 'r'付き)に置き換えられました。
  • scales.[x/y]Axes配列が削除されました。スケールはオブジェクトキーがスケールIDであるoptions.scalesオブジェクトに直接設定されるようになりました。
  • scales.[x/y]Axes.barPercentageはデータセットオプションbarPercentageに移動されました。
  • scales.[x/y]Axes.barThicknessはデータセットオプションbarThicknessに移動されました。
  • scales.[x/y]Axes.categoryPercentageはデータセットオプションcategoryPercentageに移動されました。
  • scales.[x/y]Axes.maxBarThicknessはデータセットオプションmaxBarThicknessに移動されました。
  • scales.[x/y]Axes.minBarLengthはデータセットオプションminBarLengthに移動されました。
  • scales.[x/y]Axes.scaleLabelscales[id].titleに名前が変更されました。
  • scales.[x/y]Axes.scaleLabel.labelStringscales[id].title.textに名前が変更されました。
  • scales.[x/y]Axes.ticks.beginAtZeroscales[id].beginAtZeroに名前が変更されました。
  • scales.[x/y]Axes.ticks.maxscales[id].maxに名前が変更されました。
  • scales.[x/y]Axes.ticks.minscales[id].minに名前が変更されました。
  • scales.[x/y]Axes.ticks.reversescales[id].reverseに名前が変更されました。
  • scales.[x/y]Axes.ticks.suggestedMaxscales[id].suggestedMaxに名前が変更されました。
  • scales.[x/y]Axes.ticks.suggestedMinscales[id].suggestedMinに名前が変更されました。
  • scales.[x/y]Axes.ticks.unitStepSizeは削除されました。scales[id].ticks.stepSizeを使用してください。
  • scales.[x/y]Axes.ticks.userCallbackscales[id].ticks.callbackに名前が変更されました。
  • scales.[x/y]Axes.time.formatscales[id].time.parserに名前が変更されました。
  • scales.[x/y]Axes.time.maxscales[id].maxに名前が変更されました。
  • scales.[x/y]Axes.time.minscales[id].minに名前が変更されました。
  • 軸のscales.[x/y]Axes.zeroLine*オプションは削除されました。代わりにスクリプト可能なスケールオプションを使用してください。
  • データセットオプションsteppedLineは削除されました。steppedを使用してください。
  • チャートオプションshowLinesは、データセットオプションと一致するようにshowLineに名前が変更されました。
  • チャートオプションstartAngleradialスケールオプションに移動されました。
  • チャートインスタンスで使用されるプラットフォームクラスをオーバーライドするには、設定オブジェクトにplatform: PlatformClassを渡します。クラスのインスタンスではなく、クラスを渡す必要があることに注意してください。
  • ドーナツ、パイ、極座標エリア、レーダーチャートのaspectRatioのデフォルトは1になりました。
  • TimeScaleはデフォルトではオブジェクトデータからtを読み取りません。デフォルトのプロパティは、方向に応じてxまたはyです。デフォルトの変更方法の詳細については、データ構造を参照してください。
  • tooltips名前空間は、プラグイン名と一致するようにtooltipに名前が変更されました。
  • legendtitletooltip名前空間はoptionsからoptions.pluginsに移動されました。
  • tooltips.customplugins.tooltip.externalに名前が変更されました。

# デフォルト

  • global名前空間がdefaultsから削除されました。そのため、Chart.defaults.globalChart.defaultsになりました。
  • データセットコントローラーのデフォルトはoverridesに移動されました。たとえば、Chart.defaults.lineChart.overrides.lineになりました。
  • デフォルトからdefault接頭辞が削除されました。たとえば、Chart.defaults.global.defaultColorChart.defaults.colorになりました。
  • defaultColorcolorborderColorbackgroundColorに分割されました。
  • defaultFontColorcolorに名前が変更されました。
  • defaultFontFamilyfont.familyに名前が変更されました。
  • defaultFontSizefont.sizeに名前が変更されました。
  • defaultFontStylefont.styleに名前が変更されました。
  • defaultLineHeightfont.lineHeightに名前が変更されました。
  • 水平バーチャートのツールチップのデフォルトモードが'index'から'nearest'に変更されました。これは垂直バーチャートとの整合性を保つためです。
  • legendtitletooltipの名前空間がChart.defaultsからChart.defaults.pluginsに移動されました。
  • elements.line.fillのデフォルト値がtrueからfalseに変更されました。
  • ラインチャートは、デフォルトのinteractionモードをオーバーライドしなくなりました。デフォルト値は'index'から'nearest'に変更されました。

# スケール

v3における最大の変更点は、スケールの設定オプションです。xAxesおよびyAxes配列は削除され、軸オプションはスケールIDでキー付けされた個々のスケールになりました。

v2の設定と、それに対応するv3の設定を以下に示します。

options: {
  scales: {
    xAxes: [{
      id: 'x',
      type: 'time',
      display: true,
      title: {
        display: true,
        text: 'Date'
      },
      ticks: {
        major: {
          enabled: true
        },
        font: function(context) {
          if (context.tick && context.tick.major) {
            return {
              weight: 'bold',
              color: '#FF0000'
            };
          }
        }
      }
    }],
    yAxes: [{
      id: 'y',
      display: true,
      title: {
        display: true,
        text: 'value'
      }
    }]
  }
}

そして、v3では

options: {
  scales: {
    x: {
      type: 'time',
      display: true,
      title: {
        display: true,
        text: 'Date'
      },
      ticks: {
        major: {
          enabled: true
        },
        color: (context) => context.tick && context.tick.major && '#FF0000',
        font: function(context) {
          if (context.tick && context.tick.major) {
            return {
              weight: 'bold'
            };
          }
        }
      }
    },
    y: {
      display: true,
      title: {
        display: true,
        text: 'value'
      }
    }
  }
}
  • タイムスケールオプションのdistribution: 'series'は削除され、代わりに新しいスケールタイプtimeseriesが導入されました。
  • タイムスケールでは、他のスケールとの整合性を保つため、autoSkipがデフォルトで有効になりました。

# アニメーション

Chart.js v3ではアニメーションシステムが完全に書き直されました。各プロパティを個別にアニメーション化できるようになりました。詳細はアニメーションドキュメントを参照してください。

# カスタマイズ性

  • 要素のcustom属性は削除されました。スクリプタブルオプションを使用してください。
  • スクリプタブルオプションのcontextオブジェクトのhoverプロパティは、datalabelsプラグインと合わせるためactiveに名前変更されました。

# インタラクション

  • DRYな設定を可能にするため、共通のインタラクションオプションのルートオプションスコープが追加されました。options.hoveroptions.plugins.tooltipは両方ともoptions.interactionを拡張するようになりました。デフォルトはdefaults.interactionレベルで定義されているため、デフォルトではホバーとツールチップのインタラクションは同じモードなどを共有します。
  • interactionsは、チャート領域と許可されたオーバーフローに制限されるようになりました。
  • {mode: 'label'}{mode: 'index'}に置き換えられました。
  • {mode: 'single'}{mode: 'nearest', intersect: true}に置き換えられました。
  • modes['X-axis']{mode: 'index', intersect: false}に置き換えられました。
  • options.onClickは、チャート領域に制限されるようになりました。
  • options.onClickoptions.onHoverは、第3引数としてchartインスタンスを受け取るようになりました。
  • options.onHoverは、最初の引数としてラップされたeventを受け取るようになりました。以前の最初の引数の値はevent.nativeからアクセスできます。
  • options.hover.onHoverは削除されました。options.onHoverを使用してください。

# チック

  • options.gridLinesoptions.gridに名前変更されました。
  • options.gridLines.offsetGridLinesoptions.grid.offsetに名前変更されました。
  • options.gridLines.tickMarkLengthoptions.grid.tickLengthに名前変更されました。
  • options.ticks.fixedStepSizeは使用されなくなりました。options.ticks.stepSizeを使用してください。
  • options.ticks.majoroptions.ticks.minorは、ティックフォントのスクリプタブルオプションに置き換えられました。
  • Chart.Ticks.formatters.linearChart.Ticks.formatters.numericに名前変更されました。
  • 放射状線形スケールでは、options.ticks.backdropPaddingXoptions.ticks.backdropPaddingYoptions.ticks.backdropPaddingに置き換えられました。

# ツールチップ

  • xLabelyLabelは削除されました。labelformattedValueを使用してください。
  • filterオプションは、呼び出されるときに追加のパラメータが渡されるようになり、メソッドシグネチャはfunction(tooltipItem, index, tooltipItems, data)になります。
  • customコールバックは、tooltipchartのプロパティを持つコンテキストオブジェクトを受け取るようになりました。
  • ツールチップオプションに関連するツールチップモデルのすべてのプロパティは、optionsプロパティ内に移動されました。
  • コールバックは、dataパラメータを受け取らなくなりました。ツールチップアイテムパラメータには、チャートとデータセットが含まれるようになりました。
  • ツールチップアイテムのindexパラメータはdataIndexに、valueformattedValueに名前変更されました。
  • xPaddingyPaddingオプションは、単一のpaddingオブジェクトにマージされました。

# 開発者向け移行

Chart.js 3へのエンドユーザーの移行は比較的簡単ですが、開発者の移行はより複雑になる可能性があります。移行に関するヒントが必要な場合は、#dev Discord (opens new window)チャンネルにご連絡ください。

変更された主な点の一部

  • 完全に書き直され、パフォーマンスが向上したアニメーションシステムがあります。
    • Element._modelElement._viewは使用されなくなり、プロパティは要素に直接設定されるようになりました。inXRange/inYRangegetCenterPointなどのほとんどのメソッド内でこれらのプロパティにアクセスするには、getPropsメソッドを使用する必要があります。Chart.jsが提供する要素 (opens new window)で例を確認してください。
    • コントローラーで要素を作成する際には、要素のプロパティを提供するためにupdateElementを呼び出すことを推奨します。また、冗長な計算をスキップするためのgetSharedOptionsincludeOptionsなどのメソッドも追加されています。Chart.jsが提供するコントローラー (opens new window)で例を確認してください。
  • スケールには新しい解析APIが導入されました。このAPIはユーザーデータを取得し、より標準的な形式に変換します。例えば、ユーザーが数値データをstringとして提供し、必要に応じてnumberに変換できます。以前は、チャートがレンダリングされる際にオンザフライでこれを実行していました。現在は事前に実行され、ユーザーが正しい形式でデータを提供する場合、パフォーマンス向上のためスキップできます。x/yのような標準的なデータ形式を使用している場合は、何もする必要はありません。カスタムデータ形式を使用している場合は、core.datasetController.jsでいくつかの解析メソッドをオーバーライドする必要があります。例はchartjs-chart-financial (opens new window)で見つけることができます。これは{o, h, l, c}データ形式を使用しています。

コントローラーには、より簡単な変更がいくつか行われましたが、すべてのコントローラーに影響します。

  • オプション
    • globalは、不要で、場合によっては矛盾していたため、デフォルトの名前空間から削除されました。
    • データセットのデフォルトは、以前は逆でしたが、現在はチャートタイプのオプションの下にあります。これは、下位互換性を保つために2.xで導入されたときには行うことができませんでした。これを修正することで、新しいチャート開発者が遭遇する最大の障害が取り除かれました。
    • エンドユーザーの移行セクションで説明されているように、スケールのデフォルトオプションを更新する必要があります(例:xAxesではなくxyAxesではなくy)。
  • updateElementupdateElementsに変更され、以下に示すように新しいメソッドシグネチャになりました。これにより、すべての要素に共通する計算の再利用を容易にし、関数呼び出しの数を削減するなど、パフォーマンスが向上します。

# 削除されたもの

次のプロパティとメソッドは削除されました。

# Chartから削除されたもの

  • Chart.animationService
  • Chart.active
  • Chart.borderWidth
  • Chart.chart.chart
  • Chart.Bar。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。
  • Chart.Bubble。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。
  • Chart.Chart
  • Chart.Controller
  • Chart.Doughnut。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。
  • Chart.innerRadiusは、ドーナツ、パイ、ポーラーエリアのコントローラーに存在するようになりました。
  • Chart.lastActive
  • Chart.LegendChart.plugins.legend._elementに移動され、プライベート化されました。
  • Chart.Line。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。
  • Chart.LinearScaleBaseはインポートする必要があり、Chartオブジェクトからアクセスできなくなりました。
  • Chart.offsetX
  • Chart.offsetY
  • Chart.outerRadiusは、ドーナツ、パイ、ポーラーエリアのコントローラーに存在するようになりました。
  • Chart.pluginsChart.registryに置き換えられました。プラグインのデフォルトは、Chart.defaults.plugins[id]にあります。
  • Chart.plugins.registerChart.registerに置き換えられました。
  • Chart.PolarArea。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。
  • Chart.prototype.generateLegend
  • Chart.platform。これはdisableCSSInjectionのみを含んでいました。v3ではCSSは決して挿入されません。
  • Chart.PluginBase
  • Chart.Radar. 新しいチャートは、new Chart を使用し、適切な type パラメータを指定することで作成されます。
  • Chart.radiusLength
  • Chart.scaleServiceChart.registry に置き換えられました。スケールのデフォルト値は、Chart.defaults.scales[type] にあります。
  • Chart.Scatter. 新しいチャートは、new Chart を使用し、適切な type パラメータを指定することで作成されます。
  • Chart.types
  • Chart.TitleChart.plugins.title._element に移動され、プライベート化されました。
  • Chart.Tooltip はツールチッププラグインによって提供されるようになりました。位置決め関数は tooltipPlugin.positioners からアクセスできます。
  • ILayoutItem.minSize

# データセットコントローラーから削除されたもの

  • BarController.getDatasetMeta().bar
  • DatasetController.addElementAndReset
  • DatasetController.createMetaData
  • DatasetController.createMetaDataset
  • DoughnutController.getRingIndex

# エレメントから削除されたもの

  • Element.getArea
  • Element.height
  • Element.hidden はチャートレベルの状態に置き換えられ、getDataVisibility(index) / toggleDataVisibility(index) で使用できます。
  • Element.initialize
  • Element.inLabelRange
  • Line.calculatePointY

# ヘルパーから削除されたもの

  • helpers.addEvent
  • helpers.aliasPixel
  • helpers.arrayEquals
  • helpers.configMerge
  • helpers.findIndex
  • helpers.findNextWhere
  • helpers.findPreviousWhere
  • helpers.extend. 代わりに Object.assign を使用してください。
  • helpers.getValueAtIndexOrDefault. 代わりに helpers.resolve を使用してください。
  • helpers.indexOf
  • helpers.lineTo
  • helpers.longestText はプライベート化されました。
  • helpers.max
  • helpers.measureText はプライベート化されました。
  • helpers.min
  • helpers.nextItem
  • helpers.niceNum
  • helpers.numberOfLabelLines
  • helpers.previousItem
  • helpers.removeEvent
  • helpers.roundedRect
  • helpers.scaleMerge
  • helpers.where

# レイアウトから削除されたもの

  • Layout.defaults

# スケールから削除されたもの

  • LinearScaleBase.handleDirectionalChanges
  • LogarithmicScale.minNotZero
  • Scale.getRightValue
  • Scale.longestLabelWidth
  • Scale.longestTextCache はプライベート化されました。
  • Scale.margins はプライベート化されました。
  • Scale.mergeTicksOptions
  • Scale.ticksAsNumbers
  • Scale.tickValues はプライベート化されました。
  • TimeScale.getLabelCapacity はプライベート化されました。
  • TimeScale.tickFormatFunction はプライベート化されました。

# プラグイン(凡例、タイトル、ツールチップ)から削除されたもの

  • IPlugin.afterScaleUpdate. 代わりに afterLayout を使用してください。
  • Legend.margins はプライベート化されました。
  • Legend の onClickonHoveronLeave オプションは、暗黙的な this 以外にも、第3引数として凡例を受け取るようになりました。
  • Legend の onClickonHoveronLeave オプションは、ラップされた event を最初の引数として受け取るようになりました。以前の最初の引数の値は event.native からアクセスできます。
  • Title.margins はプライベート化されました。
  • ツールチップアイテムの x 属性と y 属性は element に置き換えられました。代わりに element.xelement.y、または element.tooltipPosition() を使用できます。

# パブリックAPIの削除

次のパブリックAPIが削除されました。

  • getElementAtEventchart.getElementsAtEventForMode(e, 'nearest', { intersect: true }, false) に置き換えられました。
  • getElementsAtEventchart.getElementsAtEventForMode(e, 'index', { intersect: true }, false) に置き換えられました。
  • getElementsAtXAxischart.getElementsAtEventForMode(e, 'index', { intersect: false }, false) に置き換えられました。
  • getDatasetAtEventchart.getElementsAtEventForMode(e, 'dataset', { intersect: true }, false) に置き換えられました。

# プライベートAPIの削除

次のプライベートAPIが削除されました。

  • Chart._bufferedRender
  • Chart._updating
  • Chart.data.datasets[datasetIndex]._meta
  • DatasetController._getIndexScaleId
  • DatasetController._getIndexScale
  • DatasetController._getValueScaleId
  • DatasetController._getValueScale
  • Element._ctx
  • Element._model
  • Element._view
  • LogarithmicScale._valueOffset
  • TimeScale.getPixelForOffset
  • TimeScale.getLabelWidth
  • Tooltip._lastActive

# 名前変更

v3 の開発中に、次のプロパティの名前が変更されました。

  • Chart.Animation.animationObjectChart.Animation に名前変更されました。
  • Chart.Animation.chartInstanceChart.Animation.chart に名前変更されました。
  • Chart.canvasHelpersChart.helpers とマージされました。
  • Chart.elements.ArcChart.elements.ArcElement に名前変更されました。
  • Chart.elements.LineChart.elements.LineElement に名前変更されました。
  • Chart.elements.PointChart.elements.PointElement に名前変更されました。
  • Chart.elements.RectangleChart.elements.BarElement に名前変更されました。
  • Chart.layoutServiceChart.layouts に名前変更されました。
  • Chart.pluginServiceChart.plugins に名前変更されました。
  • helpers.callCallbackhelpers.callback に名前変更されました。
  • helpers.drawRoundedRectanglehelpers.roundedRect に名前変更されました。
  • helpers.getValueOrDefaulthelpers.valueOrDefault に名前変更されました。
  • LayoutItem.fullWidthLayoutItem.fullSize に名前変更されました。
  • Point.controlPointPreviousXPoint.cp1x に名前変更されました。
  • Point.controlPointPreviousYPoint.cp1y に名前変更されました。
  • Point.controlPointNextXPoint.cp2x に名前変更されました。
  • Point.controlPointNextYPoint.cp2y に名前変更されました。
  • Scale.calculateTickRotationScale.calculateLabelRotation に名前変更されました。
  • Tooltip.options.legendColorBackgroupdTooltip.options.multiKeyBackground に名前変更されました。

# プライベートAPIの名前変更

下記のプライベートAPIの名前が変更されました。

  • BarController.calculateBarIndexPixelsBarController._calculateBarIndexPixels に名前変更されました。
  • BarController.calculateBarValuePixelsBarController._calculateBarValuePixels に名前変更されました。
  • BarController.getStackCountBarController._getStackCount に名前変更されました。
  • BarController.getStackIndexBarController._getStackIndex に名前変更されました。
  • BarController.getRulerBarController._getRuler に名前変更されました。
  • Chart.destroyDatasetMetaChart._destroyDatasetMeta に名前変更されました。
  • Chart.drawDatasetChart._drawDataset に名前変更されました。
  • Chart.drawDatasetsChart._drawDatasets に名前変更されました。
  • Chart.eventHandlerChart._eventHandler に名前変更されました。
  • Chart.handleEventChart._handleEvent に名前変更されました。
  • Chart.initializeChart._initialize に名前変更されました。
  • Chart.resetElementsChart._resetElements に名前変更されました。
  • Chart.unbindEventsChart._unbindEvents に名前変更されました。
  • Chart.updateDatasetChart._updateDataset に名前変更されました。
  • Chart.updateDatasetsChart._updateDatasets に名前変更されました。
  • Chart.updateLayoutChart._updateLayout に名前変更されました。
  • DatasetController.destroyDatasetController._destroy に名前変更されました。
  • DatasetController.insertElementsDatasetController._insertElements に名前変更されました。
  • DatasetController.onDataPopDatasetController._onDataPop に名前変更されました。
  • DatasetController.onDataPushDatasetController._onDataPush に名前変更されました。
  • DatasetController.onDataShiftDatasetController._onDataShift に名前変更されました。
  • DatasetController.onDataSpliceDatasetController._onDataSplice に名前変更されました。
  • DatasetController.onDataUnshiftDatasetController._onDataUnshift に名前変更されました。
  • DatasetController.removeElementsDatasetController._removeElements に名前変更されました。
  • DatasetController.resyncElementsDatasetController._resyncElements に名前変更されました。
  • LayoutItem.isFullWidthLayoutItem.isFullSize に名前変更されました。
  • RadialLinearScale.setReductionsRadialLinearScale._setReductions に名前変更されました。
  • RadialLinearScale.pointLabelsRadialLinearScale._pointLabels に名前変更されました。
  • Scale.handleMarginsScale._handleMargins に名前変更されました。

# 変更点

このセクションに記載されているAPIは、バージョン2からシグネチャまたは動作が変更されています。

# スケールでの変更点

  • Scale.getLabelForIndexscale.getLabelForValue に置き換えられました。
  • Scale.getPixelForValue は、1つのパラメータのみを必要とするようになりました。TimeScale の場合、そのパラメータはエポックからのミリ秒である必要があります。パフォーマンスの最適化として、データポイントのインデックスを与えるオプションの第2パラメータを受け入れる場合があります。
# 目盛りでの変更点
  • Scale.afterBuildTicks は、他のコールバックと同様にパラメータを持ちません。
  • Scale.buildTicks は、目盛りオブジェクトを返すことが期待されるようになりました。
  • Scale.convertTicksToLabelsgenerateTickLabels に名前変更されました。入力として与えられた目盛りに label プロパティを設定することが期待されるようになりました。
  • Scale.ticks は、文字列の代わりにオブジェクトを含むようになりました。
  • autoSkip オプションが有効になっている場合、Scale.ticks はすべての目盛りの代わりにスキップされていない目盛りのみを含むようになりました。
  • 目盛りは常に単調増加順で生成されるようになりました。
# 時系列スケールでの変更点
  • getValueForPixel は、エポックからのミリ秒を返すようになりました。

# コントローラーでの変更点

# コアコントローラー
  • updateHoverStyle の最初の引数は、elementdatasetIndexindex を含むオブジェクトの配列になりました。
  • resize のシグネチャが変更され、最初の silent パラメータが削除されました。
# データセットコントローラー
  • updateElementupdateElements に置き換えられ、更新する要素、start インデックス、countmode を取るようになりました。
  • setHoverStyleremoveHoverStyle は、datasetIndexindex を追加で取るようになりました。

# インタラクションでの変更点

  • インタラクションモードメソッドは、elementdatasetIndexindex を含むオブジェクトの配列を返すようになりました。

# レイアウトでの変更点

  • ILayoutItem.update は、戻り値を持ちません。

# ヘルパーでの変更点

すべてのヘルパーはフラットな階層で公開されるようになりました。例:Chart.helpers.canvas.clipArea -> Chart.helpers.clipArea

# キャンバスヘルパー
  • drawPoint 関数の第2引数は、完全なオプションオブジェクトになりました。そのため、stylerotationradius は明示的に渡されなくなりました。
  • helpers.getMaximumHeighthelpers.dom.getMaximumSize に置き換えられました。
  • helpers.getMaximumWidthhelpers.dom.getMaximumSize に置き換えられました。
  • helpers.clearhelpers.clearCanvas に名前が変更され、canvas とオプションで ctx をパラメータとして受け取るようになりました。
  • helpers.retinaScale はオプションの第3パラメータ forceStyle を受け取るようになりました。これは現在のキャンバススタイルの強制上書きを行います。forceRatiowindow.devicePixelRatio にフォールバックしなくなり、デフォルト値は 1 になります。

# プラットフォームの変更点

  • Chart.platform は、チャートで使用されるプラットフォームオブジェクトではなくなりました。各チャートインスタンスは、個別のプラットフォームインスタンスを持つようになりました。
  • Chart.platforms は、使用可能な2つのプラットフォームクラス、BasicPlatformDomPlatform を含むオブジェクトです。また、すべてのプラットフォームが拡張する必要があるクラスである BasePlatform も含まれています。
  • 渡されたキャンバスが OffscreenCanvas のインスタンスの場合、BasicPlatform が自動的に使用されます。
  • isAttached メソッドがプラットフォームに追加されました。

# IPlugin インターフェースの変更点

  • すべてのプラグインフックのシグネチャが、3つの引数(chartargsoptions)で統一されました。これは、以下のフックのシグネチャの変更を意味します: beforeInitafterInitresetbeforeLayoutafterLayoutbeforeRenderafterRenderbeforeDrawafterDrawbeforeDatasetsDrawafterDatasetsDrawbeforeEventafterEventresizedestroy
  • afterDatasetsUpdateafterUpdatebeforeDatasetsUpdatebeforeUpdate は、第2引数として args オブジェクトを受け取るようになりました。options 引数は常に最後にあるため、第2位から第3位に移動されました。
  • afterEventbeforeEvent は、第2引数の event プロパティとしてラップされた event を受け取るようになりました。ネイティブイベントは args.event.native からアクセスできます。
  • 初期の resize はもはやサイレントではありません。つまり、resize イベントは beforeInitafterInit の間で発生する可能性があります。
  • 新しいフック: installstartstopuninstall
  • afterEvent は、args.changed を true に設定することで、レンダリングが必要な変更を通知する必要があります。args はすべてのプラグインで共有されるため、true にのみ設定し、false に設定しないでください。
最終更新日: 2024年5月17日 午後12時33分38秒