chart.js插件显示具体数值

简介

Chart.js是一款不依赖任何外部js库的图表插件,具体的使用方法可查看Chart.js官网

需求

Chart.js并没有直接提供显示具体数值的功能,需要鼠标移上去,才会显示数值,现在,我们需要显示具体的数值。

效果

在每一条柱状上显示具体数值。

Chart.js效果

 代码实现:

该代码可自动填充颜色。为了防止鼠标悬停时闪烁,需要添加以下代码:

// 将hover动画设置为0,防止鼠标悬停产生闪烁
hover: {animationDuration: 0}

 完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Chart示例</title>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script>
</head>
<body>
	<canvas id="barChart"></canvas>
</body>
<script>
    // 功能 返回随机的颜色值
    // @param opacity 透明度
    // @return rgba格式颜色值
    var dynamicColors = function (opacity) {
        var r = Math.floor(Math.random() * 255);
        var g = Math.floor(Math.random() * 255);
        var b = Math.floor(Math.random() * 255);
        var a = opacity;
        return "rgba(" + r + "," + g + "," + b + "," + a + ")";
    }

    // 功能 返回rgba格式颜色数组
    // @param length 数组的长度
    // @param opacity 颜色的透明度
    // return 返回rgba数组
    var getColorArr = function (length, opacity) {
        var colorArr = new Array();
        for (var i = 0; i < length; i++) {
            colorArr.push(dynamicColors(opacity));
        }
        return colorArr;
    }

    

    // 准备数据
    var labels = ['一月','二月','三月','四月','五月','六月','七月'];
    var data = [12, 10, 5, 2, 20, 30, 45];
    var chartData = {
        // x轴显示的label
        labels: labels,
        datasets: [{
            data: data, // 数据               
            label: '业务考核得分',// 图例
            backgroundColor: getColorArr(labels.length,0.5),
            borderWidth: 1
        }]
    };
    // 绘制图表
    var ctx = document.getElementById('barChart').getContext('2d');
    var bar = new Chart(ctx, {
        type: 'bar',
        data: chartData,
        options: {
            hover: {
                animationDuration: 0  // 防止鼠标移上去,数字闪烁
            },
            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.forEach(function (bar, index) {
                            var data = dataset.data[index];
                            ctx.fillText(data, bar._model.x, bar._model.y - 5);
                        });
                    });
                }
            }
        }
    });

</script>
</html>

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
你可以通过以下步骤在Django项目中使用chart.js来绘制图表: 1. 在你的HTML文件中,首先确保你已经导入了chart.js文件。你可以使用`<script>`标签将其引入,如下所示: ```html <script src="/static/JS/chart/node_modules/chart.js/dist/chart.js"></script> ``` 请注意,这里的`/static/JS/chart/`路径应该根据你的项目目录结构进行相应的调整。 2. 接下来,你需要在HTML文件中创建一个用于显示图表的`<canvas>`元素。为了方便起见,给这个元素一个唯一的id,以便稍后在JavaScript代码中引用。例如: ```html <canvas id="myChart"></canvas> ``` 3. 在你的JavaScript文件中,使用以下代码来获取对`<canvas>`元素的引用,并通过Chart.js创建图表: ```javascript // 获取对canvas元素的引用 var ctx = document.getElementById('myChart').getContext('2d'); // 创建图表 var myChart = new Chart(ctx, { type: 'bar', // 设置图表类型,例如柱状图、折线图等 data: { labels: ['标签1', '标签2', '标签3'], // 图表的标签 datasets: [{ label: '数据集1', data: [10, 20, 30], // 数据集 backgroundColor: 'rgba(0, 123, 255, 0.5)', // 数据集的背景颜色 borderColor: 'rgba(0, 123, 255, 1)', // 数据集的边框颜色 borderWidth: 1 // 边框宽度 }] }, options: { // 设置图表的其他配置选项,例如标题、坐标轴等 } }); ``` 这是一个简单的示例,使用了柱状图类型和一个数据集。你可以根据需要自定义图表的类型、数据和其他选项。 确保你已经在正确的位置引入了chart.js文件并按照以上步骤进行操作,即可在HTML中使用chart.js绘制图表。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值