修改Chart.JS中散点图的信息框

问题描述 投票:0回答:1

我正在使用chart.js中的散点图,我需要修改高于点时显示的信息。我认为包含此信息的框称为tooltip

下面显示我现在拥有的,

enter image description here

我想做的是修改第一个,并像x轴一样放置14:52

在x轴上很容易,

options: {
    scales: {
        xAxes: [{
            type: 'linear',
            position: 'bottom',
            ticks: {
                callback: function(value, index, values) {
                    var time = String(value);
                    if (time.length == 3){
                        time = '0' + time;
                    }
                    var hour = time[0] + time[1];
                    var min = time[2] + time[3];
                    var label = hour + ':' + min;
                    return label;
                }
            }
        }]
    }
}

而且我想在这里我必须使用相同的功能,但是我不知道在哪里。我无法访问包含信息的框,它的名称不是工具提示吗?例如,我正在执行以下代码,但没有任何变化。

tooltips:{
    title: "New title"
}

如何修改该框?

非常感谢

javascript chart.js
1个回答
1
投票

title和工具提示上的其他项目可以使用callback功能进行自定义。正确的语法如下所示。

tooltips:{
    callbacks: {
        title: (tooltipItem, data) => "New title"
    }
}

也请查看以下从https://www.chartjs.org/samples/latest/tooltips/callbacks.html派生的更复杂的示例。使用scatter图表还是line图表都应该没什么区别。

new Chart(document.getElementById('myChart'), {
    type: 'line',
    data: {
        labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
        datasets: [{
            label: 'My First dataset',
            borderColor: 'red',
            backgroundColor: 'red',
            data: [15, 22, 18, 28, 8, 13, 24],
            fill: false,
        }, {
            label: 'My Second dataset',
            borderColor: 'blue',
            backgroundColor: 'blue',
            data: [5, 31, 15, 22, 19, 29, 12],
            fill: false,
        }]
    },
    options: {
        responsive: true,
        title: {
            display: true,
            text: 'Chart.js Line Chart - Custom Information in Tooltip'
        },
        tooltips: {
            mode: 'index',
            callbacks: {
                title: (tooltipItem, data) => "New title",
                // Use the footer callback to display the sum of the items showing in the tooltip
                footer: (tooltipItems, data) => {
                    var sum = 0;
                    tooltipItems.forEach(function(tooltipItem) {
                        sum += data.datasets[tooltipItem.datasetIndex].data[tooltipItem.index];
                    });
                    return 'Sum: ' + sum;
                },
            },
            footerFontStyle: 'normal'
        },
        hover: {
            mode: 'index',
            intersect: true
        },
        scales: {
            xAxes: [{
                display: true,
                scaleLabel: {
                    show: true,
                    labelString: 'Month'
                }
            }],
            yAxes: [{
                display: true,
                scaleLabel: {
                    show: true,
                    labelString: 'Value'
                }
            }]
        }
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<canvas id="myChart" height="100"></canvas>
© www.soinside.com 2019 - 2024. All rights reserved.