2016-11-13 10 views
0

DjangoとChartJSを使用して複数の行(複数のデータセット)でグラフを作成したいと思います。Chart.js - プロパティを読み取ることができません

データ属性にデータを追加します。データ属性には、行ごとにダッシュ( - )で区切り、すべての値に対してカンマ(、)で区切ります。その後、JSはそれを分割してチャートを描画するために使用します。

<canvas id="product-linechart" data-labels="" data-charts="95.0,98.0,158.0,160.0,191.0,106.0,51.0,158.0,89.0,154.0-89.0,104.0,62.0,190.0,172.0,109.0,183.0,88.0,89.0,106.0-133.0,173.0,102.0,151.0,119.0,172.0,139.0,177.0,174.0,141.0-72.0,108.0,175.0,81.0,123.0,188.0,52.0,196.0,199.0,117.0-174.0,154.0,180.0,87.0,193.0,105.0,106.0,115.0,185.0,159.0-83.0,111.0,185.0,199.0,133.0,142.0,61.0,74.0,168.0,128.0-77.0,120.0,116.0,60.0,179.0,162.0,151.0,123.0,138.0,109.0-156.0,69.0,126.0,67.0,97.0,193.0,96.0,64.0,117.0,190.0-93.0,71.0,59.0,101.0,86.0,139.0,110.0,75.0,183.0,156.0" data-data_list="" width="1648" height="447" style="width: 1465px; height: 398px;" class=""></canvas> 

問題は、それがエラーを発生させていることである:

Uncaught TypeError: Cannot read property '0' of undefined(…)(anonymous function) @ chart.js:11s.each @ chart.js:10(anonymous function) @ chart.js:11s.each @ chart.js:10initialize @ chart.js:11e.Type @ chart.js:10s @ chart.js:10e.(anonymous function) @ chart.js:10(anonymous function) @ (index):118l @ jquery.min.js:2fireWith @ jquery.min.js:2ready @ jquery.min.js:2A @ jquery.min.js:2 

JS:

<script type="text/javascript"> 
     $(function() { 
      "use strict"; 
      var charts = $('#product-linechart').attr('data-charts').split('-'); 
      var datasets = []; 
      charts.forEach(function (chart) { 

       datasets.push({ 
        fillColor: "rgba(151,187,205,0.2)", 
        strokeColor: "rgba(151,187,205,1)", 
        pointColor: "rgba(151,187,205,1)", 
        pointStrokeColor: "#fff", 
        pointHighlightFill: "#fff", 
        pointHighlightStroke: "rgba(151,187,205,1)", 
        data: chart.split('.') 
       }) 
      }); 

      var data = { 
       datasets: datasets 
      }; 
      new Chart(document.getElementById("product-linechart").getContext("2d")).Line(data, { 
       responsive: true, 
       maintainAspectRatio: false 
      }); 

     }); 

あなたはいただきました!問題を知っていますか?

編集:私はラベルを設定すると

、新しいエラーがoccures:あなたがAPIをグラフに提供lablesdatasetに持っていなかったので

(index):117 Uncaught SyntaxError: Unexpected identifier 
26115.jpg:1 GET http://127.0.0.1:8000/dashboard/static/dashboard/img/26115.jpg 404 (Not Found) 
avatar.png:1 GET http://127.0.0.1:8000/dashboard/static/dashboard/img/avatar.png 404 (Not Found) 
(index):3949 Uncaught TypeError: Cannot read property 'getContext' of null 
    at HTMLDocument.<anonymous> (http://127.0.0.1:8000/dashboard/products/view/28/:3949:55) 
    at l (http://127.0.0.1:8000/static/dashboard/js/jquery.min.js:2:16996) 
    at Object.fireWith [as resolveWith] (http://127.0.0.1:8000/static/dashboard/js/jquery.min.js:2:17781) 
    at Function.ready (http://127.0.0.1:8000/static/dashboard/js/jquery.min.js:2:12504) 
    at HTMLDocument.A (http://127.0.0.1:8000/static/dashboard/js/jquery.min.js:2:9909)(anonymous function) @ (index):3949l @ jquery.min.js:2fireWith @ jquery.min.js:2ready @ jquery.min.js:2A @ jquery.min.js:2 

答えて

1

。チャートを描画しようとすると、各データをグラフにプロットする前にラベルを探します。

var data = { 
    datasets: datasets, 
    labels : ["10","20","30","40","50","60","70","80","90","100"] //<-- added labels 
}; 
new Chart(document.getElementById("product-linechart").getContext("2d")).Line(data, { 
    responsive: true, 
    maintainAspectRatio: false 
}); 

Demo Fiddle

関連する問題