繁体   English   中英

如何在Chart.js中将图标用作图例?

[英]How to use icon as legend in Chart.js?

要求使用图标替换图例:

在此处输入图片说明

因此,我需要更改图例中的国家/地区名称才能使用每个国家/地区的标志。 有没有办法在Chart.js中做到这一点? 或带有任何图形库?

是的,Chart.js github存储库上有一个未解决的问题 ,但是您可以实现扩展绘图功能的目标:

 var chartData = { "labels": ["Italy", "Germany", "Netherlands", "France", "Spain"], "datasets": [{ "data": [65, 59, 80, 81, 56], "fill": false, "backgroundColor": ["rgba(255, 99, 132, 0.2)", "rgba(255, 159, 64, 0.5)", "rgba(255, 205, 86, 0.5)", "rgba(75, 192, 192, 0.5)", "rgba(54, 162, 235, 0.5)"], "borderColor": ["rgb(255, 99, 132)", "rgb(255, 159, 64)", "rgb(255, 205, 86)", "rgb(75, 192, 192)", "rgb(54, 162, 235)"], "borderWidth": 1 }] }; for (var i in chartData.labels) { var lab = chartData.labels[i]; var $img = $("<img/>").attr("id", lab).attr("src", "https://www.free-country-flags.com/countries/" + lab + "/1/tiny/" + lab + ".png"); $("#pics").append($img); } var originalBarController = Chart.controllers.bar; Chart.controllers.bar = Chart.controllers.bar.extend({ draw: function() { originalBarController.prototype.draw.call(this, arguments); drawFlags(this); } }); function drawFlags(t) { var chartInstance = t.chart; var dataset = chartInstance.config.data.datasets[0]; var meta = chartInstance.controller.getDatasetMeta(0); var y0 = chartInstance.scales.y0.top + chartInstance.scales.y0.height; ctx.save(); meta.data.forEach(function(bar, index) { var lab = bar._model.label; var img = document.getElementById(lab); ctx.drawImage(img, bar._model.x - 10, y0 - 6, 20, 12); ctx.stroke(); }); ctx.restore(); } var ctx = document.getElementById("myChart").getContext("2d"); var myBar = new Chart(ctx, { "type": "bar", "data": chartData, "options": { legend: { display: false }, "scales": { "yAxes": [{ id: "y0", "ticks": { "beginAtZero": true } }] } } }); 
 #myChart { background-color: #ffffff; border: 1px solid #ff0000; } #pics { display: none; } 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.2/Chart.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <canvas id="myChart" height="200" width="400"></canvas> <div id="pics"></div> 

这也是一个jsfiddle: https ://jsfiddle.net/beaver71/0zderk1p/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM