# 時間笛卡爾軸

時間刻度用於顯示時間和日期。資料點會根據資料點之間的時間間隔來分散。在建立刻度時,它會根據刻度的大小自動計算最合適的單位。

# 日期轉接器

時間刻度**需要**同時存在日期函式庫和相應的轉接器。請從可用的轉接器中選擇 (在新視窗中開啟)

# 資料集

# 輸入資料

請參閱資料結構

# 日期格式

當為時間刻度提供資料時,Chart.js 在內部使用時間戳記,定義為自 epoch(UTC 1970 年 1 月 1 日午夜)以來的毫秒數。但是,Chart.js 也支援您選擇的日期轉接器接受的所有格式。如果您想設定 parsing: false 以獲得更好的效能,則應使用時間戳記。

# 設定選項

# 時間軸特定選項

命名空間:options.scales[scaleId]

名稱 類型 預設值 描述
min number|string 要顯示的最小項目。更多...
max number|string 要顯示的最大項目。更多...
suggestedMin number|string 如果它之前沒有資料點,則要顯示的最小項目。更多...
suggestedMax number|string 如果它之後沒有資料點,則要顯示的最大項目。更多...
adapters.date object {} 如果外部日期函式庫的轉接器需要或支援選項,則為其選項
bounds string 'data' 決定刻度的邊界。更多...
offsetAfterAutoskip boolean false 如果為 true,則會使用自動跳過的刻度計算長條圖偏移量。
ticks.source string 'auto' 如何產生刻度。更多...
time.displayFormats object 設定如何顯示不同的時間單位。更多...
time.isoWeekday boolean|number false 如果 boolean 為 true 且單位設定為 'week',則一週的第一天將為星期一。否則,將為星期日。如果為 number,則為一週第一天的索引(0 - 星期日,6 - 星期六)
time.parser string|function 日期的自訂剖析器。更多...
time.round string false 如果已定義,日期將會四捨五入到此單位的開始時間。有關允許的單位,請參閱下方的時間單位
time.tooltipFormat string 用於工具提示的格式字串。
time.unit string false 如果已定義,將強制單位為特定類型。有關詳細資訊,請參閱下方的時間單位一節。
time.minUnit string 'millisecond' 時間單位要使用的最小顯示格式。

# 所有笛卡爾軸的通用選項

命名空間:options.scales[scaleId]

名稱 類型 預設值 描述
bounds string 'ticks' 決定刻度的邊界。更多...
clip boolean true 如果為 true,則將資料集繪圖裁剪到刻度大小,而不是圖表區域
position string | object 軸的位置。更多...
stack string 堆疊群組。相同 position 和相同 stack 的軸會堆疊在一起。
stackWeight number 1 刻度在堆疊群組中的權重。用於決定群組中刻度分配的空間量。
axis string 此軸的類型。可能的值為:'x''y'。如果未設定,則會從 ID 的第一個字元推斷,該字元應為 'x''y'
offset boolean false 如果為 true,則會在兩個邊緣新增額外空間,並縮放軸以符合圖表區域。預設情況下,長條圖會將其設定為 true
title object 刻度標題設定。更多...

# 所有軸的通用選項

命名空間:options.scales[scaleId]

名稱 類型 預設值 描述
type string 所使用的刻度類型。可以使用字串鍵建立和註冊自訂刻度。這允許變更圖表軸的類型。
alignToPixels boolean false 將像素值與裝置像素對齊。
backgroundColor 顏色 刻度區域的背景顏色。
border object 邊框設定。更多...
display boolean|string true 控制軸的全域可見性(當 true 時可見,當 false 時隱藏)。當 display: 'auto' 時,軸僅在至少一個關聯的資料集可見時才可見。
grid object 網格線設定。更多...
min number 使用者定義的刻度最小值,會覆寫資料中的最小值。更多...
max number 使用者定義的刻度最大值,會覆寫資料中的最大值。更多...
reverse boolean false 反轉刻度。
stacked boolean|string false 是否應堆疊資料。更多...
suggestedMax number 計算最大資料值時使用的調整。更多...
suggestedMin number 計算最小資料值時使用的調整。更多...
ticks object 刻度設定。更多...
weight number 0 用於排序軸的權重。權重越高,離圖表區域越遠。

# 時間單位

支援以下時間測量。名稱可以字串形式傳遞到 time.unit 設定選項,以強制使用特定單位。

  • 'millisecond'
  • 'second'
  • 'minute'
  • 'hour'
  • 'day'
  • 'week'
  • 'month'
  • 'quarter'
  • 'year'

例如,若要建立一個時間刻度圖表,該圖表始終按月顯示單位,則可以使用以下設定。

const chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        scales: {
            x: {
                type: 'time',
                time: {
                    unit: 'month'
                }
            }
        }
    }
});

# 顯示格式

您可以指定每個單位的顯示格式對應表

  • millisecond
  • second
  • minute
  • hour
  • day
  • week
  • month
  • quarter
  • year

用作值的格式字串取決於您選擇使用的日期轉接器。

例如,若要將 quarter 單位的顯示格式設定為顯示月份和年份,則可能會將以下設定傳遞給圖表建構子。

const chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        scales: {
            x: {
                type: 'time',
                time: {
                    displayFormats: {
                        quarter: 'MMM YYYY'
                    }
                }
            }
        }
    }
});

# 刻度來源

ticks.source 屬性控制刻度的產生方式。

  • 'auto':根據刻度大小和時間選項產生「最佳」刻度
  • 'data':從資料產生刻度(包括資料 {x|y} 物件中的標籤)
  • 'labels':僅從使用者給定的 labels 產生刻度

# 剖析器

如果此屬性定義為字串,則會將其解讀為日期轉接器用來解析日期的自訂格式。

如果這是函數,則它必須回傳一種可由您的日期轉接器的 parse 方法處理的類型。

# 最小值/最大值設定

對於 minmax 屬性,其值必須是可由您的日期轉接器解析的 string 字串,或是自 UNIX epoch 以來經過的毫秒數的數值。在以下範例中,x 軸將從 2021 年 11 月 7 日開始。

let chart = new Chart(ctx, {
    type: 'line',
    data: {
        datasets: [{
            data: [{
                x: '2021-11-06 23:39:30',
                y: 50
            }, {
                x: '2021-11-07 01:00:28',
                y: 60
            }, {
                x: '2021-11-07 09:00:28',
                y: 20
            }]
        }],
    },
    options: {
        scales: {
            x: {
                min: '2021-11-07 00:00:00',
            }
        }
    }
});

# 將刻度類型從時間刻度變更為對數/線性刻度。

當將刻度類型從時間刻度變更為對數/線性刻度時,您需要在刻度選項中新增 bounds: 'ticks'。變更 bounds 參數是必要的,因為時間刻度的預設值是 'data'

初始設定

const chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        scales: {
            x: {
                type: 'time',
            }
        }
    }
});

刻度更新

chart.options.scales.x = {
    type: 'logarithmic',
    bounds: 'ticks'
};

# 內部資料格式

時間刻度在內部使用自 epoch 以來的毫秒數

上次更新: 2024/5/17, 下午 12:33:38