options.scales.xAxes.time.tooltipFormat
を介して折れ線グラフのデータポイントにカーソルを合わせるとツールチップを書式設定できますが、x軸の目盛りラベルに対しては表示できないようです。私のdata.labels
は、モーメントオブジェクトの配列です。それらは"MMM DD, YYYY"
(2012年2月23日など)として表示されますが、年を削除したいです。
選択したすべての時間単位のdisplayFormat
をMMM DD
に設定するだけです
options: {
scales: {
xAxes: [{
type: 'time',
time: {
displayFormats: {
'millisecond': 'MMM DD',
'second': 'MMM DD',
'minute': 'MMM DD',
'hour': 'MMM DD',
'day': 'MMM DD',
'week': 'MMM DD',
'month': 'MMM DD',
'quarter': 'MMM DD',
'year': 'MMM DD',
}
...
すべてのユニットの表示形式をMMM DD
に設定していることに注意してください。より良い方法は、データの範囲とチャートサイズを制御できる場合、ユニットを強制することです。
options: {
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'day',
unitStepSize: 1,
displayFormats: {
'day': 'MMM DD'
}
...
chart js documentation page tick configuration section に従います。コールバック関数を使用して各ティックの値をフォーマットできます。たとえば、表示される日付のロケールを常にドイツ語に変更したかった。軸オプションの目盛り部分
ticks: {
callback: function(value) {
return new Date(value).toLocaleDateString('de-DE', {month:'short', year:'numeric'});
},
},
配列に追加する前に日付をフォーマットできます。それは私がやった方法です。私はAngularJSを使用しました
//日付を標準形式に変換します
var dt = new Date(date);
//日付と月のみを取得し、ラベル配列にプッシュします
$rootScope.charts.mainChart.labels.Push(dt.getDate() + "-" + (dt.getMonth() + 1));
グラフのプレゼンテーションでこの配列を使用します
異なるユースケースがあり、グラフのデータの開始時間と終了時間の間の長さに基づいて異なるフォーマットが必要です。これが最も簡単なアプローチであることがわかりました
xAxes = {
type: "time",
time: {
displayFormats: {
hour: "hA"
}
},
display: true,
ticks: {
reverse: true
},
gridLines: {display: false}
}
// if more than two days between start and end of data, set format to show date, not hrs
if ((parseInt(Cookies.get("Epoch_max")) - parseInt(Cookies.get("Epoch_min"))) > (1000*60*60*24*2)) {
xAxes.time.displayFormats.hour = "MMM D";
}