2014-10-16 30 views
7

chart.js 라이브러리에서 여러 데이터 세트가있는 선형 차트를 동적으로 만들고 싶습니다.chart.js에 대해 동적으로 데이터 세트를 만드는 방법 꺾은 선형 차트?

나는 데이터를 동적으로 할당 할 수 있습니다. 그러나 데이터 세트 자체를 동적으로 생성하려고합니다. 나는 아래의 링크를

How to add the elements dynamically from the html table for chart.js

를보고 여기

var datasetValue = []; 
for (var j = 0; j < count; j++) { 
datasetValue[j] = [ 
{ 
fillColor: 'rgba(220,220,220,0.5)', 
strokeColor :'rgba(220,220,220,1)' , 
title :'2013', 
data : [Math.round(Math.random() * 100),Math.round(Math.random() * 100)-10] 
}] 
} 

var mydata = { 
datasets : datasetValue 
} 

카운트 값이 3

처럼 시도하고 난 차트에서 3 선을 표시 할 카운트 값이 다를 얻을 것이다. 차트 선 색상과 제목이 같아도 선을 표시하려면 먼저이를 해결하면 동적으로 변경할 수 있습니다.

I는 그것이 최초의 데이터 셋 있지만 나타낸 정의를 표시한다

alert("Datasets:"+mydata.datasets[0].data); 

같은 데이터를 액세스하려고 시도.

하지만, 아래의 경우

var mydata1 = { 
labels : ["January","February","March","April","May","June","July"], 
datasets : [ 
    { 
     fillColor : "rgba(220,220,220,0.5)", 
     strokeColor : "rgba(220,220,220,1)", 
     data : [95,53,99,73,27,82,40], 
     title : "2014" 
    }, 
    { 
     fillColor : "rgba(151,187,205,0.5)", 
     strokeColor : "rgba(151,187,205,1)", 
     data : [35,43,59,31,50,66,55], 
     title : "2013" 
    } 
] 
} 

alert("Datasets:"+mydata1.datasets[0].data); 

내가 할 수있는 첫 번째 데이터 세트의 데이터를 얻을 수. 아무도 제게 해결책을 주시겠습니까?

답변

9

다음 해결책과 같은 것을 찾고 있다고 생각합니다. http://jsfiddle.net/5m63232a/

var datasetValue = []; 
var count = 10; 
for (var j=0; j<count; j++) { 
    datasetValue[j] = { 
     fillColor: 'rgba(220,220,220,0.5)', 
     strokeColor :'rgba(220,220,220,1)', 
     title :'2013', 
     data : [Math.round(Math.random() * 100),Math.round(Math.random() * 100)-10] 
    } 
} 
var mydata = { 
    datasets : datasetValue 
} 
alert("Datasets: "+mydata.datasets[0].data); 
+0

안녕 곰 그리즐리 사이가 지금 어쨌든이 솔루션을 가지고 자바 스크립트 코드 아주 아주 감사합니다 다음을 추가 귀하의 빠른 회신을 위해. – Suresh

+2

@Suresh는 해결책을 공유하고있어? – Vladd

4

가져 오기 위해 서비스를 만들기 JSON formt 같은 :

labels : ["January","February","March","April","May","June","July"], 
     datasets : [ 
      { 
       label: "My First dataset", 
       fillColor : "rgba(220,220,220,0.2)", 
       strokeColor : "rgba(220,220,220,1)", 
       pointColor : "rgba(220,220,220,1)", 
       pointStrokeColor : "#fff", 
       pointHighlightFill : "#fff", 
       pointHighlightStroke : "rgba(220,220,220,1)", 
       data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()] 
      }, 
      { 
       label: "My Second dataset", 
       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 : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()] 
      } 
     ] 

그런

var j = []; 
$.ajax({ 
    type: 'GET', 
    url: 'http://' + window.location.host.toString() + "/path", 
    dataType: 'json', 
    success: function (data) { 
     j = data; 
    }, 
    async: false 
}); 
var chartData = { 
    labels: j.labels, 
    datasets: j.datasets 
}; 
window.onload = function() { 
    var ctx = document.getElementById("canvas").getContext("2d"); 
    window.myLine = new Chart(ctx).Line(chartData, { 
     responsive: true, 
     animation: true, 
     tooltipFillColor: "rgba(0,0,0,0.8)", 
     multiTooltipTemplate: "<%= datasetLabel %> - <%=value %>" 
    }); 
}