범례 설정

차트 범례는 차트에 나타나는 데이터집합에 대한 데이터를 보여줍니다.

설정 옵션

범례 설정은 options.legend로 전달됩니다. 차트 범례에 대한 전역 옵션은 Chart.defaults.global.legend 에 정의되어 있습니다.

이름 유형 기본 값 설명
display boolean true 범례를 표시할까요?
position string 'top' 범례의 위치. 더보기...
align string 'center' 범례의 정렬. 더보기...
fullWidth boolean true 이 상자가 캔버스의 전체 너비를 가져야하는지 표시합니다 (다른 상자들을 아래로 밉니다). 일상적인 용도로 변경해야할 필요는 없습니다.
onClick function 라벨 항목에 클릭 이벤트가 적용됬을 때 호출되는 콜백.
onHover function 라벨 항목의 위에 'mousemove' 이벤트가 적용됬을 때 호출되는 콜백.
onLeave function 'mousemove' 이벤트가 이전에 호버된 라벨 항목의 바깥에 적용됬을 때 호출되는 콜백.
reverse boolean false 범례 데이터집합이 역순으로 보여집니다.
labels object 아래 부분에서 범례 라벨 설정을 보세요.
rtl boolean true면 범례가 오른쪽부터 왼쪽으로 렌더링됩니다.
textDirection string canvas' default 이것은 텍스트 방향을 `'rtl'로 강제합니다 'ltr`은 범례를 캔버스에 대한 특정 css에 상관없이 캔버스에 렌더링하기 위함입니다

위치

범례의 위치를 지정합니다. 옵션들은:

  • 'top'
  • 'left'
  • 'bottom'
  • 'right'

정렬

범례를 정렬합니다. 옵션들은:

  • 'start'
  • 'center'
  • 'end'

인식되지 않은 값들의 기본 값은 'center'입니다.

범례 라벨 설정

범례 라벨 설정은 labels 키를 사용하여 범례 설정 아래에 중첩됩니다.

이름 유형 기본 값 설명
boxWidth number 40 색상 박스의 넓이.
fontSize number 12 텍스트의 폰트 크기.
fontStyle string 'normal' 텍스트의 폰트 스타일.
fontColor Color '#666' 텍스트의 색상.
fontFamily string "'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" 범례 텍스트의 글꼴.
padding number 10 색상 박스들 행 사이의 패딩.
generateLabels function 범례의 각 항목들의 대한 범례 항목을 만듭니다. 기본 구현은 색상 박스에 대한 텍스트 + 스타일링을 반환합니다. 범례 항목에서 자세한 사항을 확인하세요.
filter function null 범례에서 범례 항목을 필터링합니다. 2개의 파라미터를 받는데, 범례 항목과 차트 데이터입니다.
usePointStyle boolean false 라벨 스타일을 해당하는 지점의 스타일과 맺치할 것입니다 (박스 넓이와 폰트 크기 사이의 가장 작은 값이 크기의 기본 값이 됩니다).

범례 항목 인터페이스

범례의 onClick 함수에 넘겨진 항목들은 labels.generateLabels 로 부터 반환된 것입니다. 이 항목들은 다음의 인터페이스를 구현해야 합니다.

{
    // 라벨이 표시될 것입니다
    text: string,

    // 범례 박스의 스타일을 채웁니다
    fillStyle: Color,

    // 만약 true이면, 이 항목은 숨겨진 데이터집합을 나타냅니다. 라벨은 관통 효과와 함계 그려질 것입니다
    hidden: boolean,

    // 박스 테두리를 위한 설정입니다. https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap 를 확인하세요
    lineCap: string,

    // 박스 테두리를 위한 설정입니다. https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash 를 확인하세요
    lineDash: number[],

    // 박스 테두리를 위한 설정입니다. https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset 를 확인하세요
    lineDashOffset: number,

    // 박스 테두리를 위한 설정입니다. https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin 를 확인하세요
    lineJoin: string,

    // 박스 테두리를 넓이
    lineWidth: number,

    // 범례 박스의 획 스타일
    strokeStyle: Color,

    // 범례 박스의 포인트 스타일P (usePointStyle이 true일 때만 사용됩니다)
    pointStyle: string | Image,

    // 포인트의 회전 정도 (usePointStyle이 true일 때만 사용됩니다)
    rotation: number
}

예제

다음의 예제는 범례가 포함된 차트를 만들고 모든 텍스트의 색상을 빨간색으로 바꿀 것입니다.

var chart = new Chart(ctx, {
    type: 'bar',
    data: data,
    options: {
        legend: {
            display: true,
            labels: {
                fontColor: 'rgb(255, 99, 132)'
            }
        }
    }
});

클릭시 사용자 지정

범례의 항목이 클릭됬을 때 다른 동작을 작동시키길 원하는 것은 흔한 경우일 수 있습니다. 이것은 설정 객체에서 콜백을 사용하여 쉽게 달성 할 수 있습니다.

기본 범례 클릭 처리자는:

function(e, legendItem) {
    var index = legendItem.datasetIndex;
    var ci = this.chart;
    var meta = ci.getDatasetMeta(index);

    // controller.isDatasetVisible 주석을 참고하세요
    meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;

    // 우리는 데이터 집합을 숨겼습니다 ... 차트를 다시 렌더링합니다
    ci.update();
}

처음 두 데이터집합의 표시를 연결하려고 한다고 가정하겠습니다. 그에 맞춰 클릭 처리자를 변경할 수 있습니다.

var defaultLegendClickHandler = Chart.defaults.global.legend.onClick;
var newLegendClickHandler = function (e, legendItem) {
    var index = legendItem.datasetIndex;

    if (index > 1) {
        // 원래 로직을 수행합니다
        defaultLegendClickHandler(e, legendItem);
    } else {
        let ci = this.chart;
        [
            ci.getDatasetMeta(0),
            ci.getDatasetMeta(1)
        ].forEach(function(meta) {
            meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
        });
        ci.update();
    }
};

var chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        legend: {
            onClick: newLegendClickHandler
        }
    }
});

이제 이 차트의 범례를 클릭할 때, 처음 두 데이터집합의 가시성을 연결할 것입니다.

HTML 범례

가끔 매우 복잡한 범례가 필요합니다. 이러한 경우들은, HTML 범례를 생성하는 것이 좋습니다. 차트는 프로토타입에서 범례를 위한 HTML 문자열을 반환하는 generateLegend() 메소드를 제공합니다.

이 범례가 생성되는 방법을 설정하기 위해, legendCallback 설정 속성을 바꿀 수 있습니다.

var chart = new Chart(ctx, {
    type: 'line',
    data: data,
    options: {
        legendCallback: function(chart) {
            // 여기서 HTML 문자열이 반환됩니다.
        }
    }
});

legendCallback은 자동으로 호출되지 않는다는 점을 주의하시고 이 메소드를 사용하여 범례를 생성할 때 generateLegend()를 반드시 코드 내에서 호출해야 합니다.

results matching ""

    No results matching ""