새로운 축
Chart.js에서 축은 개별적으로 확장할 수 있습니다. 축은 항상
Chart.Scale
로 부터 파생되야 하지만 필수
사항은 아닙니다.
let MyScale = Chart.Scale.extend({
/* extensions ... */
});
// MyScale은 Chart.Scale로 부터 파생됩니다
스케일 클래스를 만든 후에는 사용할 수 있도록 전역 차트 객체와 함께 등록할 필요가 있습니다. 스케일에 대한 기본 설정은 생성자가 등록될 때 제공될 수 있습니다. 등록 함수에 대한 첫번째 매개변수는 차트에 사용하기 위한 스케일 유형을 식별하기 위해 나중에 사용된 문자열 키입니다.
Chart.scaleService.registerScaleType('myScale', MyScale, defaultConfigObject);
새로운 스케일을 사용하기 위해 차트가 생성될 때 설정에 문자열 키를 넘김으로 간단히 할 수 있습니다.
var lineChart = new Chart(ctx, {
data: data,
type: 'line',
options: {
scales: {
yAxes: [{
type: 'myScale' // registerScaleType 함수에 넘겨진 같은 키입니다
}]
}
}
});
스케일 속성
스케일 인스턴스는 조정 프로세스 동안 다음의 속성들이 주어집니다.
{
left: number, // 스케일 바운딩 상자의 왼쪽 가장자리
right: number, // 바운딩 상자의 오른쪽 가장자리
top: number,
bottom: number,
width: number, // 오른쪽 - 왼쪽과 동일
height: number, // 아래 - 위와 동일
// 양쪽 여백. css와 같이 바운딩 상자 바깥족.
margins: {
left: number,
right: number,
top: number,
bottom: number
},
// 바운딩 상자 내부의 여백 양 (CSS와 같이)
paddingLeft: number,
paddingRight: number,
paddingTop: number,
paddingBottom: number
}
스케일 인터페이스
Chart.js로 작업하려면 사용자 지정 스케일 유형은 다음의 인터페이스로 구현되어야만 합니다.
{
// 데이터 제한을 결정합니다. 데이터 max/min이 되는 this.min 과 this.max가 설정되어야만 합니다
determineDataLimits: function() {},
// 눈금 마크를 생성합니다. this.chart는 차트 인스턴스입니다. 데이터 객체는 this.chart.data로 접근할 수 있습니다
// 기본 클래스 구현을 사용하려는 경우 buildTicks()은 축 인스턴스의 눈금 배열로 생성되어야만 합니다
buildTicks: function() {},
// 주어진 데이터집합의 주어진 인덱스에서 데이터에 대해 표시할 값을 가져오니다. ie this.chart.data.datasets[datasetIndex].data[index]
getLabelForIndex: function(index, datasetIndex) {},
// 주어진 값에 대한 픽셀(가로 축에 대한 x 좌표, 세로 축에 대한 y 좌표)을 가져옵니다
// @param index: 눈금 배열 안에 인덱스
getPixelForTick: function(index) {},
// 주어진 값의 픽셀(가로 축에 대한 x 좌표, 세로 축에 대한 y 좌표)을 가져옵니다
// @param value : 픽셀을 가져올 값
// @param index : 값의 데이터 배열 안에 인덱스
// @param datasetIndex : 값을 가져온 데이터집합의 인덱스
getPixelForValue: function(value, index, datasetIndex) {},
// 주어진 픽셀(가로 축에 대한 x 좌표, 세로 축에 대한 y 좌표)에 대한 값을 가져옵니다
// @param pixel : 픽셀 값
getValueForPixel: function(pixel) {}
}
선택적으로 다음의 메소드는 재정의 될 수 있지만 구현은 이미
Chart.Scale
기본 클래스에서 제공되어
있습니다.
{
// 스케일 인스턴스의 눈금 배열을 문자열로 변환합니다. 기본 구현은 간단히 this.options.ticks.callback(numericalTick, index, ticks); 호출합니다
convertTicksToLabels: function() {},
// 라벨을 얼마만큼 회전해야할지 결정합니다. 스케일이 수평일 경우 기본 구현은 라벨 회전만 합니다.
calculateTickRotation: function() {},
// 캔버스 내의 첫번째 스케일.
// this.maxWidth 와 this.maxHeight는 스케일 인스턴스가 할 수 있는 최대 차원을 말해줍니다. 스케일은 캔버스 공간에서 가능한한 효율적이되도록 노력해야합니다.
// this.margins는 확장한 스케일의 한쪽이 가지고 있는 공간의 양입니다. 최적의 라벨 회전 계산에 이미 사용되고 있습니다
// 스케일의 크기를 위해 this.minSize를 반드시 설정해줘야 합니다. 2 속성을 포함한 객채여야 합니다: width 와 height.
// 스케일의 넓이를 위해 this.width를 설정해줘야 하고 높이를 위해 this.height를 설정해줘야 합니다
fit: function() {},
// 캔버스에 스케일을 그립니다. this.(left|right|top|bottom)는 캔버스에서 그릴 영역을 알려줍니다
// @param chartArea : 4개의 속성을 가진 객체입니다: left, right, top, bottom. 이것은 선, 막대 등의 그려질 직사각형입니다. 예를들어 그리드 선을 그리는데 사용할 수 있습니다.
draw: function(chartArea) {}
}
Core.Scale 기본 클래스는 또한 유용할 수 있는 몇가지 유틸리티 함수도 있습니다.
{
// 스케일 인스턴스가 수평일 때 true를 반환합니다
isHorizontal: function() {},
// this.chart.data.datasets[x].data[]의 값으로 부터 정확한 값을 가져옵니다
// dataValue가 객체이면 isHorizontal()이 어떤 값을 반환하냐에 따라 .x 또는 .y 를 반환합니다
// 만약 값이 undefined이면 NaN을 반환합니다
// 그렇지 않으면 값을 반환합니다.
// 모든 경우에서 반환되는 값은 숫자를 보장하지 않느다는 점을 주의해야 합니다
getRightValue: function(dataValue) {},
// 스케일 눈금 객체를 반환합니다 ({label, major})
getTicks: function() {}
}