# 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.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.Legend
はChart.plugins.legend._element
に移動され、プライベート化されました。Chart.Line
。新しいチャートは、new Chart
を使用して、適切なtype
パラメータを指定することで作成されます。Chart.LinearScaleBase
はインポートする必要があり、Chart
オブジェクトからアクセスできなくなりました。Chart.offsetX
Chart.offsetY
Chart.outerRadius
は、ドーナツ、パイ、ポーラーエリアのコントローラーに存在するようになりました。Chart.plugins
はChart.registry
に置き換えられました。プラグインのデフォルトは、Chart.defaults.plugins[id]
にあります。Chart.plugins.register
はChart.register
に置き換えられました。Chart.PolarArea
。新しいチャートは、new Chart
を使用して、適切なtype
パラメータを指定することで作成されます。Chart.prototype.generateLegend
Chart.platform
。これはdisableCSSInjection
のみを含んでいました。v3ではCSSは決して挿入されません。Chart.PluginBase
Chart.Radar
. 新しいチャートは、new Chart
を使用し、適切なtype
パラメータを指定することで作成されます。Chart.radiusLength
Chart.scaleService
はChart.registry
に置き換えられました。スケールのデフォルト値は、Chart.defaults.scales[type]
にあります。Chart.Scatter
. 新しいチャートは、new Chart
を使用し、適切なtype
パラメータを指定することで作成されます。Chart.types
Chart.Title
はChart.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 の
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._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.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 に設定しないでください。