在使用库在JavaScript中绘制图表时,我还是一个新手。我刚刚开始尝试使用Chartjs,但一直无法使用getJson或其他任何方式加载我的json对象并替换标签和数据。我以前使用过HighCharts,相比之下,它非常简单。另外,我将如何将其放入Angular的指令中并显示出来。
https://jsfiddle.net/0u9Lpttx/1/
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <div style="width: 100%; height: 100%;"> <canvas id="myChart" style="width: 100%; height: auto;"></canvas> </div> <div id="js-legend" class="chart-legend"></div> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.1/Chart.min.js"></script> <script src="js/chartJsControl.js"></script> </body> </html>
data.json
[ { "timestamp": "Monday", "original_tweet": "756", "retweets": "345", "shared": "34", "quoted": "14" }, { "timestamp": "Tuesday", "original_tweet": "756", "retweets": "345", "shared": "34", "quoted": "14" }, { "timestamp": "Wednesday", "original_tweet": "756", "retweets": "345", "shared": "34", "quoted": "14" } ]
chartJsControl.js
var test = []; $.getJSON("data.json", function (json) { test.push(json[i].timestamp); }); var data = { labels: test, datasets: [ { label: "My First dataset", fillColor: "rgba(220,220,220,0.5)", strokeColor: "rgba(220,220,220,0.8)", highlightFill: "rgba(220,220,220,0.75)", highlightStroke: "rgba(220,220,220,1)", data: [65, 59, 80, 81, 56, 55, 40] }, { label: "My Second dataset", fillColor: "rgba(151,187,205,0.5)", strokeColor: "rgba(151,187,205,0.8)", highlightFill: "rgba(151,187,205,0.75)", highlightStroke: "rgba(151,187,205,1)", data: [28, 48, 40, 19, 86, 27, 90] } ] }; var ctx = document.getElementById("myChart").getContext("2d"); ctx.canvas.width = 1000; ctx.canvas.height = 800; var myChart = new Chart(ctx).Bar(data);
如果要使用从data.json返回的JSON,则需要在回调函数中执行以下操作:
$.getJSON("data.json", function (json) { // will generate array with ['Monday', 'Tuesday', 'Wednesday'] var labels = json.map(function(item) { return item.timestamp; }); var data = { labels: labels, datasets: [ { label: "My First dataset", fillColor: "rgba(220,220,220,0.5)", strokeColor: "rgba(220,220,220,0.8)", highlightFill: "rgba(220,220,220,0.75)", highlightStroke: "rgba(220,220,220,1)", data: [65, 59, 80, 81, 56, 55, 40] }, { label: "My Second dataset", fillColor: "rgba(151,187,205,0.5)", strokeColor: "rgba(151,187,205,0.8)", highlightFill: "rgba(151,187,205,0.75)", highlightStroke: "rgba(151,187,205,1)", data: [28, 48, 40, 19, 86, 27, 90] } ] }; var ctx = document.getElementById("myChart").getContext("2d"); ctx.canvas.width = 1000; ctx.canvas.height = 800; var myChart = new Chart(ctx).Bar(data); });
如果您将它与Angular一起使用,我建议您使用angular chart.js版本,请参见:http ://jtblin.github.io/angular-chart.js/
然后,您已经有了一个可以使用的角度指令!