Chart.js-工具提示与条形图值重叠

Chart.js-工具提示与条形图值重叠,chart.js,Chart.js,在条形图中,条形图上方的标签与工具提示重叠。请看下面的截图 请看下面我的代码 <!doctype html> <html> <head> <title>Single Bar Chart</title> <script src="Chart.min.js"></script> <style> canvas { border:1px

在条形图中,条形图上方的标签与工具提示重叠。请看下面的截图

请看下面我的代码

<!doctype html>
<html>

<head>
    <title>Single Bar Chart</title>
    <script src="Chart.min.js"></script>
    <style>
    canvas {
        border:1px solid #367ee9;
    }
    #container{
        width: 950px;
    }
    </style>
</head>

<body>

    <div id="container">
        <canvas id="canvas"></canvas>
    </div>

    <script>
        var barChartData = {
            labels: ["Jul 19", "Aug 19", "Sep 19", "Oct 19", "Nov 19", "Dec 19", "Jan 20", "Feb 20", "Mar 20", "Apr 20", "May 20", "Jun 20"],
            datasets: [{
                //label: 'Jan 20',
                backgroundColor: '#367ee9',
                borderColor: '#367ee9',
                borderWidth: 1,
                data: [33111, 27510, 27377, 14947, 4312, 7279, 70988, 2903, 29575, 65, 9861, 3416],
                data_action: ["bar1_action", "bar2_action", "bar3_action", "bar4_action", "bar5_action", "bar6_action", "bar7_action", "bar8_action", "bar9_action", "bar10_action", "bar11_action", "bar12_action"],
                data_alt: ["Click here to see results of bar1_alt", "bar2_alt", "bar3_alt", "bar4_alt", "bar5_alt", "bar6_alt", "bar7_alt", "bar8_alt", "bar9_alt", "bar10_alt", "bar11_alt", "bar12_alt"],
            }]

        };

        window.onload = function() {
            var ctx = document.getElementById('canvas').getContext('2d');
            window.myBar = new Chart(ctx, {
                type: 'bar',
                data: barChartData,
                options: {
                    responsive: true,
                    onHover: (event, chartElement) => {
                        event.target.style.cursor = chartElement[0] ? 'pointer' : 'default';
                    },
                    hover: {
                        animationDuration: 0,
                    },
                    animation: {
                        duration: 1000,
                        onComplete: function () {
                            var chartInstance = this.chart,
                            ctx = chartInstance.ctx;

                            ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily);
                            ctx.textAlign = 'center';
                            ctx.textBaseline = 'bottom';
                            //ctx.canvas.style.zIndex = 5;

                            this.data.datasets.forEach(function (dataset, i) {
                                var meta = chartInstance.controller.getDatasetMeta(i);
                                meta.data.forEach(function (bar, index) {
                                    
                                    var val = dataset.data[index];
                                    var data = "$" + val.toLocaleString();
                                    if(val > -1){
                                        ctx.fillText(data, bar._model.x, bar._model.y - 5);
                                    }
                                    else{
                                        ctx.fillText(data, bar._model.x, bar._model.y + 14);
                                    }

                                });
                            });
                        }
                    },
                    onClick:function(evt) {
                        var firstPoint = this.getElementAtEvent(evt)[0];

                        if (firstPoint) {

                            var value = this.data.datasets[firstPoint._datasetIndex].data_action[firstPoint._index];
                            alert(value);

                        }

                    },
                    legend: {
                        display: false,
                        position: 'top',
                        onHover:function(){
                            event.target.style.cursor = 'pointer';
                        },
                    },
                    title: {
                        display: true,
                        text: 'Total Benefits Exceeded ($231,345) (Claim Date)',
                        fontColor: '#000',
                        fontSize: '15',
                    },
                    tooltips: {
                        yAlign:'top',
                        displayColors: false, // hide color box
                        yPadding: 10,
                        xPadding: 10,
                        backgroundColor: '#fff',
                        borderColor: '#000',
                        borderWidth: 1,
                        bodyFontFamily: 'tahoma,Verdana,Arial, Helvetica, sans-serif',
                        bodyFontSize: 13,
                        bodyFontColor:'#000',
                        callbacks: {
                            title: function(tooltipItem, data) {
                                return; // hide title
                            },
                            label: function(tooltipItem, data) {
                                barCount = tooltipItem.index;
                                barIndex = tooltipItem.datasetIndex;
                                var label = data.datasets[barIndex].data_alt[barCount];
                                return label;
                            },
                        }
                    },
                    scales: {
                        yAxes: [{
                            display: false,
                            scaleLabel: {
                                display: true,
                                labelString: 'Denied Charges ($)',
                                fontColor: '#000',
                                fontSize: '15',
                                fontStyle: 'bold',
                            },
                            ticks: {
                                callback: function(value, index, values) {
                                    return '$' + value.toLocaleString();
                                }
                            },
                        }]
                    }
                }
            });
        };
    </script>
</body>

</html>

单柱状图
帆布{
边框:1px实心#367ee9;
}
#容器{
宽度:950px;
}
var barChartData={
标签:[“7月19日”、“8月19日”、“9月19日”、“10月19日”、“11月19日”、“12月19日”、“1月20日”、“2月20日”、“3月20日”、“4月20日”、“5月20日”、“6月20日”],
数据集:[{
//标签:“1月20日”,
背景颜色:“#367ee9”,
边框颜色:“#367ee9”,
边框宽度:1,
数据:[33111275102737714947431217279709882903295756598613416],
数据动作:[“bar1动作”、“bar2动作”、“bar3动作”、“bar4动作”、“bar5动作”、“bar6动作”、“bar7动作”、“bar8动作”、“bar9动作”、“bar10动作”、“bar11动作”、“bar12动作”],
数据高度:[“单击此处查看bar1高度”、“bar2高度”、“bar3高度”、“bar4高度”、“bar5高度”、“bar6高度”、“bar7高度”、“bar8高度”、“bar9高度”、“bar10高度”、“bar11高度”、“bar12高度”的结果],
}]
};
window.onload=函数(){
var ctx=document.getElementById('canvas').getContext('2d');
window.myBar=新图表(ctx{
类型:'bar',
数据:barChartData,
选项:{
回答:是的,
onHover:(事件,图表元素)=>{
event.target.style.cursor=chartElement[0]?“指针”:“默认值”;
},
悬停:{
动画持续时间:0,
},
动画:{
持续时间:1000,
onComplete:函数(){
var chartInstance=this.chart,
ctx=chartInstance.ctx;
ctx.font=Chart.helpers.fontString(Chart.defaults.global.defaultFontSize,Chart.defaults.global.defaultFontStyle,Chart.defaults.global.defaultFontFamily);
ctx.textAlign='中心';
ctx.textb基线='底部';
//ctx.canvas.style.zIndex=5;
this.data.datasets.forEach(函数(dataset,i){
var meta=chartInstance.controller.getDatasetMeta(i);
meta.data.forEach(函数(条、索引){
var val=dataset.data[index];
var data=“$”+val.tolocalString();
如果(val>-1){
填充文本(数据,条._model.x,条._model.y-5);
}
否则{
ctx.fillText(数据,条._model.x,条._model.y+14);
}
});
});
}
},
onClick:函数(evt){
var firstPoint=this.getElementAtEvent(evt)[0];
如果(第一点){
var value=this.data.datasets[firstPoint.\u datasetIndex].data\u action[firstPoint.\u index];
警报(值);
}
},
图例:{
显示:假,
位置:'顶部',
onHover:function(){
event.target.style.cursor='pointer';
},
},
标题:{
显示:对,
文本:'超过总福利($231345)(索赔日期)',
fontColor:“#000”,
字体大小:“15”,
},
工具提示:{
Yalling:“顶部”,
DisplayColor:false,//隐藏颜色框
加上:10,
加上:10,
背景颜色:“#fff”,
边框颜色:“#000”,
边框宽度:1,
bodyFontFamily:“tahoma、Verdana、Arial、Helvetica、sans serif”,
车身尺寸:13,
bodyFontColor:“#000”,
回调:{
标题:函数(工具提示项、数据){
return;//隐藏标题
},
标签:函数(工具提示项、数据){
barCount=tooltipItem.index;
barIndex=工具提示项.datasetIndex;
var label=data.datasets[barIndex].data_alt[barCount];
退货标签;
},
}
},
比例:{
雅克斯:[{
显示:假,
scaleLabel:{
显示:对,
标签字符串:“否认指控($)”,
fontColor:“#000”,
字体大小:“15”,
字体:“粗体”,
},
滴答声:{
回调:函数(值、索引、值){
返回“$”+value.toLocalString();
}
},
ctx.save();
ctx.globalCompositeOperation='destination-over';