如何使用ChartJS创建多色条形图
时间:2020-02-23 14:45:51 来源:igfitidea点击:
在本教程中,我们将学习使用ChartJS和一些静态数据绘制多色条形图。
在上一教程中,我们介绍了如何使用静态数据绘制条形图。
在本教程中,我们将为条形图使用不同的颜色。
项目结构
我们将从以下项目结构开始。
现在,在css文件夹中,我们将创建一个default.css
文件。
在js文件夹中,我们将创建一个bar-multicolor.js
文件。
在项目文件夹中,我们将创建一个bar-multicolor.html
文件。
bar-multicolor.html
在head内部,我们包含了default.css文件,该文件将为图形设置样式。
在body
内部,我们有一个canvas
元素,其ID为bar-chartcanvas
。
我们将在此画布内绘制条形图。
在文件末尾的body标记之前,我们包括jquery.min.js,Chart.min.js和bar-multicolor.js javascript文件。
<!DOCTYPE html> <html> <head> <title>ChartJS - Multicolor Bar graph</title> <link href="css/default.css" rel="stylesheet"> </head> <body> <div class="chart-container"> <canvas id="bar-chartcanvas"></canvas> </div> <!-- javascript --> <script src="js/jquery.min.js"></script> <script src="js/Chart.min.js"></script> <script src="js/bar-multicolor.js"></script> </body> </html>
default.css
该文件包含一些样式规则以对图表进行样式设置。
.chart-container { width: 80%; height: 480px; margin: 0 auto; }
bar-multicolor.js
在此文件中,我们具有使用ChartJS和静态数据创建条形图的逻辑。
在此示例中,我们有5场比赛的两个团队TeamA得分和TeamB得分,分别是match1,match2,... match5。
对于不同的颜色,我们将backgroundColor
属性设置为颜色数组。
$(document).ready(function () { var ctx = $("#bar-chartcanvas"); var data = { labels : ["match1", "match2", "match3", "match4", "match5"], datasets : [ { label : "TeamA score", data : [10, 50, 25, 70, 40], backgroundColor : [ "red", "green", "blue", "purple", "magenta" ], borderColor : [ "#111", "#111", "#111", "#111", "#111" ], borderWidth : 1 }, { label : "TeamB score", data : [20, 35, 40, 60, 50], backgroundColor : [ "aqua", "salmon", "darkgray", "pink", "coral" ], borderColor : [ "#111", "#111", "#111", "#111", "#111" ], borderWidth : 1 } ] }; var options = { title : { display : true, position : "top", text : "Bar Graph", fontSize : 18, fontColor : "#111" }, legend : { display : false }, scales : { yAxes : [{ ticks : { min : 0 } }] } }; var chart = new Chart( ctx, { type : "bar", data : data, options : options }); });
随机多色条形图
为了在每次加载页面时获得随机的多色条形图,我们使用了getRandomColorHex()函数。
此函数以十六进制形式返回颜色,例如#0011AA。
$(document).ready(function () { var ctx = $("#bar-chartcanvas"); var data = { labels : ["match1", "match2", "match3", "match4", "match5"], datasets : [ { label : "TeamA score", data : [10, 50, 25, 70, 40], backgroundColor : [ getRandomColorHex(), getRandomColorHex(), getRandomColorHex(), getRandomColorHex(), getRandomColorHex() ], borderColor : [ "#111", "#111", "#111", "#111", "#111" ], borderWidth : 1 }, { label : "TeamB score", data : [20, 35, 40, 60, 50], backgroundColor : [ getRandomColorHex(), getRandomColorHex(), getRandomColorHex(), getRandomColorHex(), getRandomColorHex() ], borderColor : [ "#111", "#111", "#111", "#111", "#111" ], borderWidth : 1 } ] }; var options = { title : { display : true, position : "top", text : "Random Multicolor Bar Graph", fontSize : 18, fontColor : "#111" }, legend : { display : false }, scales : { yAxes : [{ ticks : { min : 0 } }] } }; var chart = new Chart( ctx, { type : "bar", data : data, options : options }); /** * function to generate random color in hex form */ function getRandomColorHex() { var hex = "0123456789ABCDEF", color = "#"; for (var i = 1; i <= 6; i++) { color += hex[Math.floor(Math.random() * 16)]; } return color; } });