Angular4を勉強している者です。
TypeScriptにてChart.jsを使ったグラフ描写を実装しています。
HTML
1<!doctype html> 2<html lang="en"> 3<head> 4 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.bundle.min.js"></script> 5</head> 6<body> 7 <canvas id="graph2" width="1050" height="400"></canvas> 8</body> 9</html>
TypeScript
1 2// グラフ描画 3let data = { 4 labels: {"1月","2月","3月"}, 5 datasets: [ 6 { 7 label: "件数", 8 fillColor: "rgba(220,220,220,0.5)", 9 strokeColor: "rgba(220,220,220,0.8)", 10 highlightFill: "rgba(220,220,220,0.75)", 11 highlightStroke: "rgba(220,220,220,1)", 12 data: {3, 2, 10} // ★ここは可変データ。通るたびに変化★ 13 } 14 ] 15}; 16 17let element: HTMLCanvasElement =<HTMLCanvasElement>document.getElementById('graph1'); 18 19let myChart = new Chart(ctx, { 20 type: 'bar', 21 data: data 22 }); 23 24
一回上記の通り実装してグラフは表示されました。
しかし、画面リロードをせず再度上記処理を通した際に、一旦は最新のグラフが表示されるのですが、
1回目に描画した棒グラフの棒があった部分にホバーしたところ、1回目に描画したグラフに切り替わってしまいました。
おそらく裏で残ってしまっていると考えたので、以下の通り処理を追加しました。
TypeScript
1 2// グラフ描画 3let data = { 4 labels: {"1月","2月","3月"}, 5 datasets: [ 6 { 7 label: "件数", 8 fillColor: "rgba(220,220,220,0.5)", 9 strokeColor: "rgba(220,220,220,0.8)", 10 highlightFill: "rgba(220,220,220,0.75)", 11 highlightStroke: "rgba(220,220,220,1)", 12 data: {3, 2, 10} // ★ここは可変データ。通るたびに変化★ 13 } 14 ] 15}; 16 17let element: HTMLCanvasElement =<HTMLCanvasElement>document.getElementById('graph1'); 18 19// 追加箇所----------------------------------------------- 20let ctx = element.getContext("2d"); 21ctx.clearRect(0,0,element.width,element.height); 22ctx.beginPath(); 23// 追加箇所ここまで----------------------------------------------- 24 25let myChart = new Chart(ctx, { 26 type: 'bar', 27 data: data 28 }); 29 30 31
削除してから描画するという形でうまくいくかと思いきや、事態は変わりませんでした。
単純に描いたグラフを削除したいだけなのですが、なぜかうまくいきません。
非常にざっくりした説明で申し訳ございませんが、
canvasに詳しい方、同じような現象にあわれた方いらっしゃいましたらご教示いただけますと幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/24 01:05
2017/08/25 03:36
2017/08/28 02:04