Chart.js에서 원형 차트에 onclick 추가

6826 단어 chart.js

개요



클릭한 요소마다 다른 움직임을 하고 싶을 때 고생했기 때문에 메모 대신
(초학자이므로 실수 등 있을지도 모릅니다)

샘플 코드



sample.html
<!DOCTYPE html>

<head>
    <title>Pie Chart</title>
</head>

<body>
    <canvas id='myChart'></canvas>

    <script src='http://code.jquery.com/jquery-3.3.1.js'></script>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.min.js'></script>
    <script src='sample.js'></script>
</body>

</html>

sample.js
let myChart = new Chart(ctx, {
    type: 'pie',
    data: data = {
        labels: ['Red', 'Yellow', 'Blue'],
        datasets: [{
            data: [10, 20, 30],
            backgroundColor: ['#FF0000', '#00FF00', '#0000FF']
        }],
    },
});


$('#myChart').on('click', (evt) => {
    // クリックされたアイテムの取得
    const activePoints = myChart.getElementsAtEvent(evt);

    if (activePoints.length > 0) {
        // クリックされた配列の番号
        const clickedElementindex = activePoints[0]['_index'];

        // クリックされた要素の内容
        const label = myChart.data.labels[clickedElementindex];

        if (label === 'Red') {
            console.log('Red');
        }
        else if (label === 'Yellow') {
            console.log('Yellow');
        }
        else if (label === 'Blue') {
            console.log('Blue');
        }
    }
});

결과





요약



label을 if문으로 판정하고 있으므로 방법으로서 그다지 아름답지 않을까라고 생각하거나. . .
밀렸을 때에 myChart.update()로 그래프를 갱신하거나 하면 표현의 폭이 넓어질 것 같네요!

좋은 웹페이지 즐겨찾기