chart没有直接绘制数值,需要在canvas上添加绘制数值
获得chart在canvas上绘制得柱状图,在柱状图的正上方,通过fillText方法绘制数值
bar._model.x是绘制的柱状图的x坐标
bar._model.y是绘制的柱状图的y坐标
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script> </head> <body> <div style="width: 400px;height: 200px;"> <canvas id="myChart"></canvas> </div> </body> <script> var labels = ['一月','二月','三月','四月'];//标签 var values = [230, 300, 530, 350];//数值 var canvasId = "myChart"; var title = "iphone14销量";//标题 show(canvasId,labels,values,title); //绘制图形 function show(canvasId,labels,values,title) { var data = { labels: labels,//标签 datasets: [{ data: values, // 数值 label: title,// 标题 backgroundColor: "rgb(255,100,150)",//颜色 borderWidth: 1,//线粗细 }] }; var config = { type: 'bar',//图形类型 data: data, options: { // 显示数值 animation: { onComplete: function () { var chartInstance = this.chart, ctx = chartInstance.ctx; // 以下属于canvas的属性(font、fillStyle、textAlign...) ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, Chart.defaults.global.defaultFontStyle, Chart.defaults.global.defaultFontFamily); ctx.fillStyle = "black"; ctx.textAlign = 'center'; ctx.textBaseline = 'bottom'; this.data.datasets.forEach(function (dataset, i) { var meta = chartInstance.controller.getDatasetMeta(i); //meta.data柱状图得集合 meta.data.forEach(function (bar, index) { var data = dataset.data[index]; ctx.fillText(data, bar._model.x, bar._model.y - 5); //绘制数值 }); }); } } } }; // 绘制图表 var ctx = document.getElementById(canvasId); var bar = new Chart(ctx, config); } </script> </html>
0条评论
点击登录参与评论