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';