# 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.jsとChart.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.rectangleはelements.barになりました。hover.animationDurationはanimation.active.durationで設定されるようになりました。responsiveAnimationDurationはanimation.resize.durationで設定されるようになりました。- 極座標エリアの
elements.arc.angleは、ラジアンではなく度数で設定されるようになりました。 - 極座標エリアの
startAngleオプションはRadarと一致するようになり、0は上部にあり、値は度数です。デフォルトは-½πから0に変更されました。 - ドーナツチャートの
rotationオプションは度数になり、0は上部になります。デフォルトは-½πから0に変更されました。 - ドーナツチャートの
circumferenceオプションは度数になりました。デフォルトは2πから360に変更されました。 - ドーナツチャートの
cutoutPercentageはcutoutに名前が変更され、数値としてピクセル、文字列としてパーセント(末尾に%)を受け入れます。 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.scaleLabelはscales[id].titleに名前が変更されました。scales.[x/y]Axes.scaleLabel.labelStringはscales[id].title.textに名前が変更されました。scales.[x/y]Axes.ticks.beginAtZeroはscales[id].beginAtZeroに名前が変更されました。scales.[x/y]Axes.ticks.maxはscales[id].maxに名前が変更されました。scales.[x/y]Axes.ticks.minはscales[id].minに名前が変更されました。scales.[x/y]Axes.ticks.reverseはscales[id].reverseに名前が変更されました。scales.[x/y]Axes.ticks.suggestedMaxはscales[id].suggestedMaxに名前が変更されました。scales.[x/y]Axes.ticks.suggestedMinはscales[id].suggestedMinに名前が変更されました。scales.[x/y]Axes.ticks.unitStepSizeは削除されました。scales[id].ticks.stepSizeを使用してください。scales.[x/y]Axes.ticks.userCallbackはscales[id].ticks.callbackに名前が変更されました。scales.[x/y]Axes.time.formatはscales[id].time.parserに名前が変更されました。scales.[x/y]Axes.time.maxはscales[id].maxに名前が変更されました。scales.[x/y]Axes.time.minはscales[id].minに名前が変更されました。- 軸の
scales.[x/y]Axes.zeroLine*オプションは削除されました。代わりにスクリプト可能なスケールオプションを使用してください。 - データセットオプション
steppedLineは削除されました。steppedを使用してください。 - チャートオプション
showLinesは、データセットオプションと一致するようにshowLineに名前が変更されました。 - チャートオプション
startAngleはradialスケールオプションに移動されました。 - チャートインスタンスで使用されるプラットフォームクラスをオーバーライドするには、設定オブジェクトに
platform: PlatformClassを渡します。クラスのインスタンスではなく、クラスを渡す必要があることに注意してください。 - ドーナツ、パイ、極座標エリア、レーダーチャートの
aspectRatioのデフォルトは1になりました。 TimeScaleはデフォルトではオブジェクトデータからtを読み取りません。デフォルトのプロパティは、方向に応じてxまたはyです。デフォルトの変更方法の詳細については、データ構造を参照してください。tooltips名前空間は、プラグイン名と一致するようにtooltipに名前が変更されました。legend、title、tooltip名前空間はoptionsからoptions.pluginsに移動されました。tooltips.customはplugins.tooltip.externalに名前が変更されました。
# デフォルト
global名前空間がdefaultsから削除されました。そのため、Chart.defaults.globalはChart.defaultsになりました。- データセットコントローラーのデフォルトは
overridesに移動されました。たとえば、Chart.defaults.lineはChart.overrides.lineになりました。 - デフォルトから
default接頭辞が削除されました。たとえば、Chart.defaults.global.defaultColorはChart.defaults.colorになりました。 defaultColorはcolor、borderColor、backgroundColorに分割されました。defaultFontColorはcolorに名前が変更されました。defaultFontFamilyはfont.familyに名前が変更されました。defaultFontSizeはfont.sizeに名前が変更されました。defaultFontStyleはfont.styleに名前が変更されました。defaultLineHeightはfont.lineHeightに名前が変更されました。- 水平バーチャートのツールチップのデフォルトモードが
'index'から'nearest'に変更されました。これは垂直バーチャートとの整合性を保つためです。 legend、title、tooltipの名前空間が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.hoverとoptions.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.onClickとoptions.onHoverは、第3引数としてchartインスタンスを受け取るようになりました。options.onHoverは、最初の引数としてラップされたeventを受け取るようになりました。以前の最初の引数の値はevent.nativeからアクセスできます。options.hover.onHoverは削除されました。options.onHoverを使用してください。
# チック
options.gridLinesはoptions.gridに名前変更されました。options.gridLines.offsetGridLinesはoptions.grid.offsetに名前変更されました。options.gridLines.tickMarkLengthはoptions.grid.tickLengthに名前変更されました。options.ticks.fixedStepSizeは使用されなくなりました。options.ticks.stepSizeを使用してください。options.ticks.majorとoptions.ticks.minorは、ティックフォントのスクリプタブルオプションに置き換えられました。Chart.Ticks.formatters.linearはChart.Ticks.formatters.numericに名前変更されました。- 放射状線形スケールでは、
options.ticks.backdropPaddingXとoptions.ticks.backdropPaddingYはoptions.ticks.backdropPaddingに置き換えられました。
# ツールチップ
xLabelとyLabelは削除されました。labelとformattedValueを使用してください。filterオプションは、呼び出されるときに追加のパラメータが渡されるようになり、メソッドシグネチャはfunction(tooltipItem, index, tooltipItems, data)になります。customコールバックは、tooltipとchartのプロパティを持つコンテキストオブジェクトを受け取るようになりました。- ツールチップオプションに関連するツールチップモデルのすべてのプロパティは、
optionsプロパティ内に移動されました。 - コールバックは、
dataパラメータを受け取らなくなりました。ツールチップアイテムパラメータには、チャートとデータセットが含まれるようになりました。 - ツールチップアイテムの
indexパラメータはdataIndexに、valueはformattedValueに名前変更されました。 xPaddingとyPaddingオプションは、単一のpaddingオブジェクトにマージされました。
# 開発者向け移行
Chart.js 3へのエンドユーザーの移行は比較的簡単ですが、開発者の移行はより複雑になる可能性があります。移行に関するヒントが必要な場合は、#dev Discord (opens new window)チャンネルにご連絡ください。
変更された主な点の一部
- 完全に書き直され、パフォーマンスが向上したアニメーションシステムがあります。
Element._modelとElement._viewは使用されなくなり、プロパティは要素に直接設定されるようになりました。inXRange/inYRangeやgetCenterPointなどのほとんどのメソッド内でこれらのプロパティにアクセスするには、getPropsメソッドを使用する必要があります。Chart.jsが提供する要素 (opens new window)で例を確認してください。- コントローラーで要素を作成する際には、要素のプロパティを提供するために
updateElementを呼び出すことを推奨します。また、冗長な計算をスキップするためのgetSharedOptionsやincludeOptionsなどのメソッドも追加されています。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ではなくx、yAxesではなくy)。
updateElementはupdateElementsに変更され、以下に示すように新しいメソッドシグネチャになりました。これにより、すべての要素に共通する計算の再利用を容易にし、関数呼び出しの数を削減するなど、パフォーマンスが向上します。
# 削除されたもの
次のプロパティとメソッドは削除されました。
# Chartから削除されたもの
Chart.animationServiceChart.activeChart.borderWidthChart.chart.chartChart.Bar。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。Chart.Bubble。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。Chart.ChartChart.ControllerChart.Doughnut。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。Chart.innerRadiusは、ドーナツ、パイ、ポーラーエリアのコントローラーに存在するようになりました。Chart.lastActiveChart.LegendはChart.plugins.legend._elementに移動され、プライベート化されました。Chart.Line。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。Chart.LinearScaleBaseはインポートする必要があり、Chartオブジェクトからアクセスできなくなりました。Chart.offsetXChart.offsetYChart.outerRadiusは、ドーナツ、パイ、ポーラーエリアのコントローラーに存在するようになりました。Chart.pluginsはChart.registryに置き換えられました。プラグインのデフォルトは、Chart.defaults.plugins[id]にあります。Chart.plugins.registerはChart.registerに置き換えられました。Chart.PolarArea。新しいチャートは、new Chartを使用して、適切なtypeパラメータを指定することで作成されます。Chart.prototype.generateLegendChart.platform。これはdisableCSSInjectionのみを含んでいました。v3ではCSSは決して挿入されません。Chart.PluginBaseChart.Radar. 新しいチャートは、new Chartを使用し、適切なtypeパラメータを指定することで作成されます。Chart.radiusLengthChart.scaleServiceはChart.registryに置き換えられました。スケールのデフォルト値は、Chart.defaults.scales[type]にあります。Chart.Scatter. 新しいチャートは、new Chartを使用し、適切なtypeパラメータを指定することで作成されます。Chart.typesChart.TitleはChart.plugins.title._elementに移動され、プライベート化されました。Chart.Tooltipはツールチッププラグインによって提供されるようになりました。位置決め関数はtooltipPlugin.positionersからアクセスできます。ILayoutItem.minSize
# データセットコントローラーから削除されたもの
BarController.getDatasetMeta().barDatasetController.addElementAndResetDatasetController.createMetaDataDatasetController.createMetaDatasetDoughnutController.getRingIndex
# エレメントから削除されたもの
Element.getAreaElement.heightElement.hiddenはチャートレベルの状態に置き換えられ、getDataVisibility(index)/toggleDataVisibility(index)で使用できます。Element.initializeElement.inLabelRangeLine.calculatePointY
# ヘルパーから削除されたもの
helpers.addEventhelpers.aliasPixelhelpers.arrayEqualshelpers.configMergehelpers.findIndexhelpers.findNextWherehelpers.findPreviousWherehelpers.extend. 代わりにObject.assignを使用してください。helpers.getValueAtIndexOrDefault. 代わりにhelpers.resolveを使用してください。helpers.indexOfhelpers.lineTohelpers.longestTextはプライベート化されました。helpers.maxhelpers.measureTextはプライベート化されました。helpers.minhelpers.nextItemhelpers.niceNumhelpers.numberOfLabelLineshelpers.previousItemhelpers.removeEventhelpers.roundedRecthelpers.scaleMergehelpers.where
# レイアウトから削除されたもの
Layout.defaults
# スケールから削除されたもの
LinearScaleBase.handleDirectionalChangesLogarithmicScale.minNotZeroScale.getRightValueScale.longestLabelWidthScale.longestTextCacheはプライベート化されました。Scale.marginsはプライベート化されました。Scale.mergeTicksOptionsScale.ticksAsNumbersScale.tickValuesはプライベート化されました。TimeScale.getLabelCapacityはプライベート化されました。TimeScale.tickFormatFunctionはプライベート化されました。
# プラグイン(凡例、タイトル、ツールチップ)から削除されたもの
IPlugin.afterScaleUpdate. 代わりにafterLayoutを使用してください。Legend.marginsはプライベート化されました。- Legend の
onClick、onHover、onLeaveオプションは、暗黙的なthis以外にも、第3引数として凡例を受け取るようになりました。 - Legend の
onClick、onHover、onLeaveオプションは、ラップされたeventを最初の引数として受け取るようになりました。以前の最初の引数の値はevent.nativeからアクセスできます。 Title.marginsはプライベート化されました。- ツールチップアイテムの
x属性とy属性はelementに置き換えられました。代わりにelement.xとelement.y、またはelement.tooltipPosition()を使用できます。
# パブリックAPIの削除
次のパブリックAPIが削除されました。
getElementAtEventはchart.getElementsAtEventForMode(e, 'nearest', { intersect: true }, false)に置き換えられました。getElementsAtEventはchart.getElementsAtEventForMode(e, 'index', { intersect: true }, false)に置き換えられました。getElementsAtXAxisはchart.getElementsAtEventForMode(e, 'index', { intersect: false }, false)に置き換えられました。getDatasetAtEventはchart.getElementsAtEventForMode(e, 'dataset', { intersect: true }, false)に置き換えられました。
# プライベートAPIの削除
次のプライベートAPIが削除されました。
Chart._bufferedRenderChart._updatingChart.data.datasets[datasetIndex]._metaDatasetController._getIndexScaleIdDatasetController._getIndexScaleDatasetController._getValueScaleIdDatasetController._getValueScaleElement._ctxElement._modelElement._viewLogarithmicScale._valueOffsetTimeScale.getPixelForOffsetTimeScale.getLabelWidthTooltip._lastActive
# 名前変更
v3 の開発中に、次のプロパティの名前が変更されました。
Chart.Animation.animationObjectはChart.Animationに名前変更されました。Chart.Animation.chartInstanceはChart.Animation.chartに名前変更されました。Chart.canvasHelpersはChart.helpersとマージされました。Chart.elements.ArcはChart.elements.ArcElementに名前変更されました。Chart.elements.LineはChart.elements.LineElementに名前変更されました。Chart.elements.PointはChart.elements.PointElementに名前変更されました。Chart.elements.RectangleはChart.elements.BarElementに名前変更されました。Chart.layoutServiceはChart.layoutsに名前変更されました。Chart.pluginServiceはChart.pluginsに名前変更されました。helpers.callCallbackはhelpers.callbackに名前変更されました。helpers.drawRoundedRectangleはhelpers.roundedRectに名前変更されました。helpers.getValueOrDefaultはhelpers.valueOrDefaultに名前変更されました。LayoutItem.fullWidthはLayoutItem.fullSizeに名前変更されました。Point.controlPointPreviousXはPoint.cp1xに名前変更されました。Point.controlPointPreviousYはPoint.cp1yに名前変更されました。Point.controlPointNextXはPoint.cp2xに名前変更されました。Point.controlPointNextYはPoint.cp2yに名前変更されました。Scale.calculateTickRotationはScale.calculateLabelRotationに名前変更されました。Tooltip.options.legendColorBackgroupdはTooltip.options.multiKeyBackgroundに名前変更されました。
# プライベートAPIの名前変更
下記のプライベートAPIの名前が変更されました。
BarController.calculateBarIndexPixelsはBarController._calculateBarIndexPixelsに名前変更されました。BarController.calculateBarValuePixelsはBarController._calculateBarValuePixelsに名前変更されました。BarController.getStackCountはBarController._getStackCountに名前変更されました。BarController.getStackIndexはBarController._getStackIndexに名前変更されました。BarController.getRulerはBarController._getRulerに名前変更されました。Chart.destroyDatasetMetaはChart._destroyDatasetMetaに名前変更されました。Chart.drawDatasetはChart._drawDatasetに名前変更されました。Chart.drawDatasetsはChart._drawDatasetsに名前変更されました。Chart.eventHandlerはChart._eventHandlerに名前変更されました。Chart.handleEventはChart._handleEventに名前変更されました。Chart.initializeはChart._initializeに名前変更されました。Chart.resetElementsはChart._resetElementsに名前変更されました。Chart.unbindEventsはChart._unbindEventsに名前変更されました。Chart.updateDatasetはChart._updateDatasetに名前変更されました。Chart.updateDatasetsはChart._updateDatasetsに名前変更されました。Chart.updateLayoutはChart._updateLayoutに名前変更されました。DatasetController.destroyはDatasetController._destroyに名前変更されました。DatasetController.insertElementsはDatasetController._insertElementsに名前変更されました。DatasetController.onDataPopはDatasetController._onDataPopに名前変更されました。DatasetController.onDataPushはDatasetController._onDataPushに名前変更されました。DatasetController.onDataShiftはDatasetController._onDataShiftに名前変更されました。DatasetController.onDataSpliceはDatasetController._onDataSpliceに名前変更されました。DatasetController.onDataUnshiftはDatasetController._onDataUnshiftに名前変更されました。DatasetController.removeElementsはDatasetController._removeElementsに名前変更されました。DatasetController.resyncElementsはDatasetController._resyncElementsに名前変更されました。LayoutItem.isFullWidthはLayoutItem.isFullSizeに名前変更されました。RadialLinearScale.setReductionsはRadialLinearScale._setReductionsに名前変更されました。RadialLinearScale.pointLabelsはRadialLinearScale._pointLabelsに名前変更されました。Scale.handleMarginsはScale._handleMarginsに名前変更されました。
# 変更点
このセクションに記載されているAPIは、バージョン2からシグネチャまたは動作が変更されています。
# スケールでの変更点
Scale.getLabelForIndexはscale.getLabelForValueに置き換えられました。Scale.getPixelForValueは、1つのパラメータのみを必要とするようになりました。TimeScaleの場合、そのパラメータはエポックからのミリ秒である必要があります。パフォーマンスの最適化として、データポイントのインデックスを与えるオプションの第2パラメータを受け入れる場合があります。
# 目盛りでの変更点
Scale.afterBuildTicksは、他のコールバックと同様にパラメータを持ちません。Scale.buildTicksは、目盛りオブジェクトを返すことが期待されるようになりました。Scale.convertTicksToLabelsはgenerateTickLabelsに名前変更されました。入力として与えられた目盛りに label プロパティを設定することが期待されるようになりました。Scale.ticksは、文字列の代わりにオブジェクトを含むようになりました。autoSkipオプションが有効になっている場合、Scale.ticksはすべての目盛りの代わりにスキップされていない目盛りのみを含むようになりました。- 目盛りは常に単調増加順で生成されるようになりました。
# 時系列スケールでの変更点
getValueForPixelは、エポックからのミリ秒を返すようになりました。
# コントローラーでの変更点
# コアコントローラー
updateHoverStyleの最初の引数は、element、datasetIndex、indexを含むオブジェクトの配列になりました。resizeのシグネチャが変更され、最初のsilentパラメータが削除されました。
# データセットコントローラー
updateElementはupdateElementsに置き換えられ、更新する要素、startインデックス、count、modeを取るようになりました。setHoverStyleとremoveHoverStyleは、datasetIndexとindexを追加で取るようになりました。
# インタラクションでの変更点
- インタラクションモードメソッドは、
element、datasetIndex、indexを含むオブジェクトの配列を返すようになりました。
# レイアウトでの変更点
ILayoutItem.updateは、戻り値を持ちません。
# ヘルパーでの変更点
すべてのヘルパーはフラットな階層で公開されるようになりました。例:Chart.helpers.canvas.clipArea -> Chart.helpers.clipArea
# キャンバスヘルパー
drawPoint関数の第2引数は、完全なオプションオブジェクトになりました。そのため、style、rotation、radiusは明示的に渡されなくなりました。helpers.getMaximumHeightはhelpers.dom.getMaximumSizeに置き換えられました。helpers.getMaximumWidthはhelpers.dom.getMaximumSizeに置き換えられました。helpers.clearはhelpers.clearCanvasに名前が変更され、canvasとオプションでctxをパラメータとして受け取るようになりました。helpers.retinaScaleはオプションの第3パラメータforceStyleを受け取るようになりました。これは現在のキャンバススタイルの強制上書きを行います。forceRatioはwindow.devicePixelRatioにフォールバックしなくなり、デフォルト値は1になります。
# プラットフォームの変更点
Chart.platformは、チャートで使用されるプラットフォームオブジェクトではなくなりました。各チャートインスタンスは、個別のプラットフォームインスタンスを持つようになりました。Chart.platformsは、使用可能な2つのプラットフォームクラス、BasicPlatformとDomPlatformを含むオブジェクトです。また、すべてのプラットフォームが拡張する必要があるクラスであるBasePlatformも含まれています。- 渡されたキャンバスが
OffscreenCanvasのインスタンスの場合、BasicPlatformが自動的に使用されます。 isAttachedメソッドがプラットフォームに追加されました。
# IPlugin インターフェースの変更点
- すべてのプラグインフックのシグネチャが、3つの引数(
chart、args、options)で統一されました。これは、以下のフックのシグネチャの変更を意味します:beforeInit、afterInit、reset、beforeLayout、afterLayout、beforeRender、afterRender、beforeDraw、afterDraw、beforeDatasetsDraw、afterDatasetsDraw、beforeEvent、afterEvent、resize、destroy。 afterDatasetsUpdate、afterUpdate、beforeDatasetsUpdate、beforeUpdateは、第2引数としてargsオブジェクトを受け取るようになりました。options引数は常に最後にあるため、第2位から第3位に移動されました。afterEventとbeforeEventは、第2引数のeventプロパティとしてラップされたeventを受け取るようになりました。ネイティブイベントはargs.event.nativeからアクセスできます。- 初期の
resizeはもはやサイレントではありません。つまり、resizeイベントはbeforeInitとafterInitの間で発生する可能性があります。 - 新しいフック:
install、start、stop、uninstall afterEventは、args.changedを true に設定することで、レンダリングが必要な変更を通知する必要があります。argsはすべてのプラグインで共有されるため、true にのみ設定し、false に設定しないでください。