将外部JSON加载到ChartJs中 [英] Loading an external JSON into ChartJs

查看:110
本文介绍了将外部JSON加载到ChartJs中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在使用库在JavaScript中绘制图表时,我是一个新手.我刚刚开始尝试使用Chartjs,但我一直无法使用getJson或其他任何方式加载我的json对象并替换标签和数据.我以前使用过HighCharts,与之相比,它非常简单.另外,我将如何将其放入Angular的指令中并显示出来.

I am a newbie when it comes to using libraries for drawing charts in JavaScript/ I just started experimenting with Chartjs and I have been unable to how to use getJson or anything else to load my json object and replace the labels and data. I have used HighCharts before and its quite simple compared to this. Also, how would I go about putting this into a directive in Angular and displaying it.

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,则需要在回调函数中执行以下操作:

If you want to use the returned JSON from data.json you need to do this in the callback function like this:

$.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/

If you are using it with Angular I would recommend using the angular chart.js version, see: http://jtblin.github.io/angular-chart.js/

那么您已经有了一个可以使用的角度指令!

Then you already have an angular directive, which you can use!

这篇关于将外部JSON加载到ChartJs中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆