2017-01-19 11 views
-1

JSONデータから開始日と終了日を選択するとグラフが更新されます。しかし、私はポイント上にマウスを置くと、古いグラフが表示されます。ChartJSの折れ線グラフを破る方法

私はmyLineChart.destroy();を使用して多くの投稿を読みましたが、私はgraphに追加する手段を見つけることができません。

var cdata = [{ 
 
    "_id": "585b544f5c86b6c8537c34d6", 
 
    "topic": "Humidity", 
 
    "message": 30, 
 
    "message1": 2, 
 
    "when": "2016-12-22T04:19:27.000Z" 
 
}, { 
 
    "_id": "585b54505c86b6c8537c34d7", 
 
    "topic": "Humidity", 
 
    "message": 10, 
 
    "message1": 25, 
 
    "when": "2016-12-22T04:19:28.000Z" 
 
}, { 
 
    "_id": "585b54515c86b6c8537c34d8", 
 
    "topic": "Humidity", 
 
    "message": 20, 
 
    "message1": 30, 
 
    "when": "2016-12-22T04:19:29.000Z" 
 
}, { 
 
    "_id": "585b54525c86b6c8537c34d9", 
 
    "topic": "Humidity", 
 
    "message": 50,"message1": 40, 
 
    "when": "2016-12-22T04:19:30.000Z" 
 
}, { 
 
    "_id": "585b54535c86b6c8537c34da", 
 
    "topic": "Humidity", 
 
    "message": 45, 
 
    "message1": 21, 
 
    "when": "2016-12-22T04:19:31.000Z" 
 
}] 
 
var labeldata = []; 
 
var chrtdata = []; 
 
var chartdata = []; 
 

 
for(var i =0; i < cdata.length; i++) 
 
{ 
 
    labeldata.push(cdata[i].when); 
 
    chrtdata.push(cdata[i].message) 
 
    chartdata.push(cdata[i].message1) 
 
} 
 

 

 
var ctx = document.getElementById("myChart").getContext("2d"); 
 
var myChart = new Chart(ctx, { 
 
    type: 'line', 
 
    data: { 
 
    labels: labeldata, 
 
    datasets: [{ 
 
     label: 'Humidity', 
 
     data: chrtdata, 
 
     backgroundColor: "rgba(255, 51, 0,0.6)" 
 
    }, 
 
    { 
 
     label: 'Temperature', 
 
     data: chartdata, 
 
     backgroundColor: "rgba(102, 0, 255,0.6)" 
 
    }, 
 
    
 
    ] 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.2/Chart.min.js"></script> 
 
<canvas id="myChart" width="400" height="400"></canvas>

誰かがこれで私を助けることができれば私は幸いです。

+0

何(myChart)場合は、 '続けるとどうなる{myChart.update();}'トップあなたのコードでは? –

+0

@DavidR私のグラフのどの部分? – Ekom

+0

'var cdata'宣言の直前です。 –

答えて

1

Hereグラフを動的値で破棄せずに変更できる例です。それが役に立てば幸い。

function getRandomJson() { 
    var cdata = [{ 
     "_id": "585b544f5c86b6c8537c34d6", 
     "topic": "Humidity", 
     "message": Math.floor(Math.random() * (100 - 20 + 1)) + 20, 
     "message1": Math.floor(Math.random() * (50 - 5 + 1)) + 5, 
     "when": "2016-12-22T04:19:27.000Z" 
    }, { 
     "_id": "585b54505c86b6c8537c34d7", 
     "topic": "Humidity", 
     "message": Math.floor(Math.random() * (80 - 1 + 1)) + 1, 
     "message1": Math.floor(Math.random() * (40 - 5 + 1)) + 5, 
     "when": "2016-12-22T04:19:28.000Z" 
    }, { 
     "_id": "585b54515c86b6c8537c34d8", 
     "topic": "Humidity", 
     "message": Math.floor(Math.random() * (90 - 20 + 1)) + 20, 
     "message1": Math.floor(Math.random() * (60 - 20 + 1)) + 20, 
     "when": "2016-12-22T04:19:29.000Z" 
    }, { 
     "_id": "585b54525c86b6c8537c34d9", 
     "topic": "Humidity", 
     "message": Math.floor(Math.random() * (50 - 40 + 1)) + 40, 
     "message1": Math.floor(Math.random() * (70 - 30 + 1)) + 30, 
     "when": "2016-12-22T04:19:30.000Z" 
    }, { 
     "_id": "585b54535c86b6c8537c34da", 
     "topic": "Humidity", 
     "message": Math.floor(Math.random() * (85 - 20 + 1)) + 20, 
     "message1": Math.floor(Math.random() * (65 - 35 + 1)) + 35, 
     "when": "2016-12-22T04:19:31.000Z" 
    }]; 
    return cdata; 
} 

loadGraph(); 
function loadGraph() { 
var labeldata = []; 
var chrtdata = []; 
var chartdata = []; 
var cdata = getRandomJson(); 
for(var i =0; i < cdata.length; i++) 
{ 
    labeldata.push(cdata[i].when); 
    chrtdata.push(cdata[i].message) 
    chartdata.push(cdata[i].message1) 
} 
var ctx = document.getElementById("myChart").getContext("2d"); 
var myChart = new Chart(ctx, { 
    type: 'line', 
    data: { 
    labels: labeldata, 
    datasets: [{ 
     label: 'Humidity', 
     data: chrtdata, 
     backgroundColor: "rgba(255, 51, 0,0.6)" 
    }, 
    { 
     label: 'Temperature', 
     data: chartdata, 
     backgroundColor: "rgba(102, 0, 255,0.6)" 
    }, 
    ] 
    } 
}); 
} 
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.2/Chart.min.js"></script> 

<button type="button" onClick="loadGraph()">Change Me!</button> 
<canvas id="myChart" width="400" height="400"></canvas> 
+0

お返事ありがとうございます。私はちょうどあなたのJsfiddleのソリューションをチェックアウトしました。どうやらボタンを数回クリックした後、私の問題のような前のグラフがロードされます。私のグラフは、関数ベースのあなたのソリューションに似ています。親切にチェックしてください。 – Ekom

+0

@Ekom:** JSON **をランダムなデータでロードしました。ボタンをクリックするたびにランダムにデータをロードします。あなたがしなければならない範囲でランダムにデータをロードします。そのデータをグラフに読み込むことができます。あなたが私のポイントを得ることを望むか、それ以上の質問があれば教えてください。 –

+0

ボタンを何回かクリックして5回と言うと、前のグラフが破壊されません。最初の3回は大丈夫です。私が何を意味するのかを数回試してみてください。 – Ekom

関連する問題