툴팁

툴팁 설정

툴팁 설정은 options.tooltips 네임스페이스 안에 넘깁니다. 차트 툴팁 전역 설정은 Chart.defaults.global.tooltips에 정의되어 있습니다.

이름 유형 기본 값 설명
enabled boolean true 캔버스 툴팁을 활성화 할까요?
custom function null 사용자 정의 툴팁 부분 보기.
mode string 'nearest' 툴팁에서 어떤 요소를 표현할지 설정. 더보기....
intersect boolean true 만약 true 라면, 툴팁 모드는 마우스 위치가 요소를 교차할 때만 적용됩니다. 만약 false 라면, 모드는 항상 적용됩니다.
position string 'average' 툴팁 위치에 대한 모드. 더보기...
callbacks object 콜백 부분 보기.
itemSort function 툴팁 항목들을 정렬. 더보기...
filter function 툴팁 항목들을 걸르기. 더보기...
backgroundColor Color 'rgba(0, 0, 0, 0.8)' 툴팁의 배경색.
titleFontFamily string "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 제목 폰트.
titleFontSize number 12 제목 폰트 크기.
titleFontStyle string 'bold' 제목 폰트 스타일.
titleFontColor Color '#fff' 제목 폰트 색상.
titleAlign string 'left' 제목 텍스트 라인에 대한 가로 정렬. 더보기...
titleSpacing number 2 각 제목 라인의 위와 아래에 공간 추가.
titleMarginBottom number 6 제목 부분의 아래에 여유 공간 추가.
bodyFontFamily string "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 본문 라인 폰트.
bodyFontSize number 12 본문 폰트 크기.
bodyFontStyle string 'normal' 본문 폰트 스타일.
bodyFontColor Color '#fff' 본문 폰트 색상.
bodyAlign string 'left' 본문 제목 라인에 대한 가로 정렬. 더보기...
bodySpacing number 2 각 툴팁 항목의 위와 아래쪽에 공간을 추가합니다.
footerFontFamily string "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 푸터 폰트.
footerFontSize number 12 푸터 폰트 크기.
footerFontStyle string 'bold' 푸터 폰트 스타일.
footerFontColor Color '#fff' 푸터 폰트 색상.
footerAlign string 'left' 푸터 텍스트 라인의 가로 정렬. 더보기...
footerSpacing number 2 각 푸터 라인의 위와 아래에 공간을 추가합니다.
footerMarginTop number 6 푸터를 그리기 전에 추가 할 마진.
xPadding number 6 툴팁의 왼쪽과 오른쪽에 패딩을 추가합니다.
yPadding number 6 툴팁의 위와 아래쪽에 패딩을 추가합니다.
caretPadding number 2 툴팁 화살표의 끝을 툴팁 포인트로부터 멀어지게 하고 싶은 만큼의 거리를 지정합니다.
caretSize number 5 툴팁 화살표의 크기(픽셀).
cornerRadius number 6 툴팁 가장자리 부분의 반지름 정도.
multiKeyBackground Color '#fff' 툴팁에 여러 항목들이 있을 때 색상 상자 뒤에 그려질 색상을 지정합니다.
displayColors boolean true 만약 true 이면, 툴팁에서 색상 상자가 보여집니다.
borderColor Color 'rgba(0, 0, 0, 0)' 테두리 색상.
borderWidth number 0 테두리 굵기.
rtl boolean true면 레전드가 오른쪽에서 왼쪽으로 그려집니다.
textDirection string canvas' default 텍스트 방향을 `'rtl'로 강제합니다 캔버스에 지정된 css와 관계 없이 툴팁을 그리기 위해 캔버스에 'ltr` 'ltr` on the canvas for rendering the tooltips, regardless of the css specified on the canvas

위치 모드

가능한 모드는:

  • 'average'
  • 'nearest'

'average' 모드는 툴팁에 보여지는 항목들의 평균 위치에 툴팁이 위치하게 됩니다. 'nearest' 모드는 이벤트 위치에서 가장 가까운 요소의 위치에 툴팁이 위치하게 됩니다.

새로운 모드는 Chart.Tooltip.positioners 맵에 함수로 추가 정의할 수 있습니다.

예시:

/**
 * 맞춤 위치자
 * @function Chart.Tooltip.positioners.custom
 * @param elements {Chart.Element[]} 툴팁 요소들
 * @param eventPosition {Point} 캔버스 좌표 이벤트의 위치
 * @returns {Point} 툴팁 위치
 */
Chart.Tooltip.positioners.custom = function(elements, eventPosition) {
    /** @type {Chart.Tooltip} */
    var tooltip = this;

    /* ... */

    return {
        x: 0,
        y: 0
    };
};

정렬

The titleAlign, bodyAlignfooterAlign 옵션은 툴팁 상자에 대한 텍스트 라인들의 가로방향 위치를 정의합니다. 다음의 값들을 지원합니다.

  • 'left' (기본 값)
  • 'right'
  • 'center'

이 옵션들은 텍스트 라인에 대해서만 적용됩니다. 색상 상자는 항상 왼쪽 끝으로 정렬됩니다.

정렬 콜백

툴팁 항목들의 정렬을 허용합니다. 최소한 Array.prototype.sort에 전달할 수 있는 함수를 구현해야 합니다. 이 함수는 3번째 매개변수에 차트에 넘겨진 데이터 객체를 사용할 수도 있습니다.

필터 콜백

툴팁 항목들의 필터링을 허용합니다. 최소한 Array.prototype.filter에 전달할 수 있는 함수를 구현해야 합니다. 이 함수는 2번째 매개변수에 차트에 넘겨진 데이터 객체를 사용할 수도 있습니다.

툴팁 콜백

툴팁 라벨 설정은 아래 툴팁 설정 안에 callbacks 키를 사용합니다. 툴팁은 텍스트를 제공하기 위해 다음과 같은 콜백이 있습니다. 모든 함수들의, thisChart.Tooltip 생성자를 통해 만들어진 툴팁 객체입니다.

모든 함수들은 같은 인자들로 호출됩니다: 차트에 넘겨진 툴팁 항목data 객체입니다. 모든 함수들은 문자열 또는 문자열 배열을 반환해야만 합니다. 문자열의 배열은 여러줄의 텍스트로 처리됩니다.

이름 인자 설명
beforeTitle TooltipItem[], object 제목 전에 그려질 텍스트를 반환합니다.
title TooltipItem[], object 툴팁의 제목으로 그려질 텍스트를 반환합니다.
afterTitle TooltipItem[], object 제목 후에 그려질 텍스트를 반환합니다.
beforeBody TooltipItem[], object 몸통 부분 전에 그려질 텍스트를 반환합니다.
beforeLabel TooltipItem, object 각 라벨 전에 그려질 텍스트를 반환합니다. 이것은 툴팁에서 각 항목마다 호출될 것입니다.
label TooltipItem, object 툴팁에서 각 항목에 대해 그려질 텍스트를 반환합니다. 더보기...
labelColor TooltipItem, Chart 툴팁 항목을 위해 그려질 생상을 반환합니다. 더보기...
labelTextColor TooltipItem, Chart 툴팁 항목을 위한 라벨의 텍스트를 위한 색상을 반환합니다.
afterLabel TooltipItem, object 각 라벨 후에 그려질 텍스트를 반환합니다.
afterBody TooltipItem[], object 몸통 부분 후에 그려질 텍스트를 반환합니다.
beforeFooter TooltipItem[], object 꼬리말 부분 후에 그려질 텍스트를 반환합니다.
footer TooltipItem[], object 툴팁의 꼬리말에 그려질 텍스트를 반환합니다.
afterFooter TooltipItem[], object 꼬리말 부분 후에 그려질 텍스트.

라벨 콜백

label 콜백은 주어진 데이터 포인트에 대해 표시되는 텍스트를 바꿀 수 있습니다. 데이터 값을 반올림 하는 일반적인 예시입니다: 다음의 예시는 데이터를 소수점 이하 2자리로 반올림합니다.

var chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        tooltips: {
            callbacks: {
                label: function(tooltipItem, data) {
                    var label = data.datasets[tooltipItem.datasetIndex].label || '';

                    if (label) {
                        label += ': ';
                    }
                    label += Math.round(tooltipItem.yLabel * 100) / 100;
                    return label;
                }
            }
        }
    }
});

라벨 색상 콜백

예를 들어, 툴팁의 각 항목에 대해 빨간 상자를 반환하고 싶다면 이렇게 할 수 있습니다:

var chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        tooltips: {
            callbacks: {
                labelColor: function(tooltipItem, chart) {
                    return {
                        borderColor: 'rgb(255, 0, 0)',
                        backgroundColor: 'rgb(255, 0, 0)'
                    };
                },
                labelTextColor: function(tooltipItem, chart) {
                    return '#543453';
                }
            }
        }
    }
});

툴팁 항목 인터페이스

툴팁 항목들은 다음의 인터페이스로 구현된 툴팁 콜백으로 넘겨집니다.

{
    // 툴팁 라벨
    label: string,

    // 툴팁 값
    value: string,

    // 툴팁의 X 값
    // (deprecated) 대신 `value` 또는 `label` 을 사용하세요
    xLabel: number | string,

    // 툴팁의 Y 값
    // (deprecated) 대신 `value` 또는 `label` 을 사용하세요
    yLabel: number | string,

    // 항목이 나온 데이터 그룹의 위치
    datasetIndex: number,

    // 데이터그룹에서 이 데이터 항목의 위치
    index: number,

    // 일치점의 X 위치
    x: number,

    // 일치점의 Y 위치
    y: number
}

외부 (사용자 정의) 툴팁

사용자 정의 툴팁은 툴팁 그리기 과정에 연결할 수 있으므로 사용자 정의 방식으로 툴팁을 그릴 수 있습니다. 일반적으로 이것은 oncanvas 대신 HTML 툴팁을 만드는데 사용됩니다. 다음과 같이 사용자 정의 툴팁을 전역 또는 차트 설정으로 할 수도 있습니다:

var myPieChart = new Chart(ctx, {
    type: 'pie',
    data: data,
    options: {
        tooltips: {
            // on-canvas 툴팁을 금지합니다
            enabled: false,

            custom: function(tooltipModel) {
                // 툴팁 요소
                var tooltipEl = document.getElementById('chartjs-tooltip');

                // 첫번째 그리기에서 요소 만들기
                if (!tooltipEl) {
                    tooltipEl = document.createElement('div');
                    tooltipEl.id = 'chartjs-tooltip';
                    tooltipEl.innerHTML = '<table></table>';
                    document.body.appendChild(tooltipEl);
                }

                // 툴팁이 없으면 숨기기
                if (tooltipModel.opacity === 0) {
                    tooltipEl.style.opacity = 0;
                    return;
                }

                // 캐럿 위치 설정
                tooltipEl.classList.remove('above', 'below', 'no-transform');
                if (tooltipModel.yAlign) {
                    tooltipEl.classList.add(tooltipModel.yAlign);
                } else {
                    tooltipEl.classList.add('no-transform');
                }

                function getBody(bodyItem) {
                    return bodyItem.lines;
                }

                // 텍스트 설정
                if (tooltipModel.body) {
                    var titleLines = tooltipModel.title || [];
                    var bodyLines = tooltipModel.body.map(getBody);

                    var innerHtml = '<thead>';

                    titleLines.forEach(function(title) {
                        innerHtml += '<tr><th>' + title + '</th></tr>';
                    });
                    innerHtml += '</thead><tbody>';

                    bodyLines.forEach(function(body, i) {
                        var colors = tooltipModel.labelColors[i];
                        var style = 'background:' + colors.backgroundColor;
                        style += '; border-color:' + colors.borderColor;
                        style += '; border-width: 2px';
                        var span = '<span style="' + style + '"></span>';
                        innerHtml += '<tr><td>' + span + body + '</td></tr>';
                    });
                    innerHtml += '</tbody>';

                    var tableRoot = tooltipEl.querySelector('table');
                    tableRoot.innerHTML = innerHtml;
                }

                // `this` 전반적인 툴팁이 될 것입니다
                var position = this._chart.canvas.getBoundingClientRect();

                // 폰트에 대한 보여지기, 위치, 그리고 스타일을 설정합니다
                tooltipEl.style.opacity = 1;
                tooltipEl.style.position = 'absolute';
                tooltipEl.style.left = position.left + window.pageXOffset + tooltipModel.caretX + 'px';
                tooltipEl.style.top = position.top + window.pageYOffset + tooltipModel.caretY + 'px';
                tooltipEl.style.fontFamily = tooltipModel._bodyFontFamily;
                tooltipEl.style.fontSize = tooltipModel.bodyFontSize + 'px';
                tooltipEl.style.fontStyle = tooltipModel._bodyFontStyle;
                tooltipEl.style.padding = tooltipModel.yPadding + 'px ' + tooltipModel.xPadding + 'px';
                tooltipEl.style.pointerEvents = 'none';
            }
        }
    }
});

사용자 정의 툴팁을 어떻게 시작하는지에 대한 예시들을 확인하세요.

툴팁 모델

툴팁 모델에는 툴팁을 그리는데 사용할 수 있는 매개변수를 가집니다.

{
    // 툴팁에 그려질 항목들. 툴팁 항목 인터페이스 부분을 확인하세요
    dataPoints: TooltipItem[],

    // 위치
    xPadding: number,
    yPadding: number,
    xAlign: string,
    yAlign: string,

    // 툴팁의 위 왼쪽에 대한 X 와 Y 속성
    x: number,
    y: number,
    width: number,
    height: number,
    // 툴팁 포인트 위치
    caretX: number,
    caretY: number,

    // 몸부분
    // 그려져야 하는 몸부분 라인
    // 각 객체는 3개의 매개변수를 가집니다
    // before: string[] // 색 사각형이 있는 줄 앞의 텍스트 줄
    // lines: string[], // 색 사각형에 기본 항목으로 그려질 텍스트 줄
    // after: string[], // 주요 줄 후에 그려질 텍스트 줄
    body: object[],
    // 제목 뒤에 있지만 몸부분 전에 있는 줄
    beforeBody: string[],
    // 몸부분 후와 꼬리말 전에 있는 줄
    afterBody: string[],
    bodyFontColor: Color,
    _bodyFontFamily: string,
    _bodyFontStyle: string,
    _bodyAlign: string,
    bodyFontSize: number,
    bodySpacing: number,

    // 제목
    // 제목을 구성하는 텍스트 줄
    title: string[],
    titleFontColor: Color,
    _titleFontFamily: string,
    _titleFontStyle: string,
    titleFontSize: number,
    _titleAlign: string,
    titleSpacing: number,
    titleMarginBottom: number,

    // 꼬리말
    // 꼬리말을 구성하는 텍스트 줄
    footer: string[],
    footerFontColor: Color,
    _footerFontFamily: string,
    _footerFontStyle: string,
    footerFontSize: number,
    _footerAlign: string,
    footerSpacing: number,
    footerMarginTop: number,

    // 외관
    caretSize: number,
    caretPadding: number,
    cornerRadius: number,
    backgroundColor: Color,

    // body[]의 각 항목에 대해 그려질 색상. 이것은 툴팁의 사각형의 색상입니다
    labelColors: Color[],
    labelTextColors: Color[],

    // 0 불투명도는 툴팁을 숨깁니다
    opacity: number,
    legendColorBackground: Color,
    displayColors: boolean,
    borderColor: Color,
    borderWidth: number
}

results matching ""

    No results matching ""