1
私はd3とroughjsを使っていくつかの円グラフを描いています。私は円弧を描いてからテキストをいくつか入れますが、テキストは「上がっていません」。テキストが画面上で点滅し、ページが読み込まれるとすぐに表示されますが、円グラフで覆われます。 Zインデックスを探しましたが、解決策を見つけることができませんでした。私は何が間違っていますか?HTML5キャンバスに描かれたテキストが見えません
デバッグデバッグ時に私はまた、所定の位置にラベルを見ることができます: http://i.imgur.com/jKQzcH2.png
を右後: http://i.imgur.com/KPz5Oxa.png
ここでは、コード
<!DOCTYPE html>
<meta charset="utf-8">
<canvas></canvas>
<script type="text/javascript" src="https://d3js.org/d3.v4.min.js"></script>
<script type="text/javascript" src="https://roughjs.com/builds/rough.min.js"></script>
<script>
var twData = [{"concept" : "macri", "sentiment" : [0.1, 0.9]},
{"concept" : "paritarias", "sentiment" : [0.2, 0.8]},
{"concept" : "churros", "sentiment" : [0.7, 0.3]}];
var canvas = document.querySelector("canvas"),
context = canvas.getContext("2d");
rough = new RoughCanvas(canvas, 960, 500);
context.translate(width/2, height/2);
context.textAlign = "center";
context.textBaseline = "middle";
context.fillStyle = "#000";
context.font="25px Verdana";
var width = canvas.width,
height = canvas.height,
radius = (Math.min(width, height)/2)/twData.length;
rough.hachureGap = 1;
rough.strokeWidth = 0.5;
rough.fillWeight = 1;
var colors = ["#009933", "#800000"];
var labelArc = d3.arc()
.outerRadius(radius - 40)
.innerRadius(radius - 40)
.context(context);
var dx = (width/2)/twData.length + 50;
dy = (height/2)/twData.length;
for(k=0;k<twData.length;k++){
var pie = d3.pie()
.sort(null)
.value(function(d) { return d; });
// Arcs
var arcs = pie(twData[k].sentiment);
arcs.forEach(function(d, i) {
var a = rough.arc(dx*(k+1), dy, radius * 2, radius * 2, d.startAngle - Math.PI/2, d.endAngle - Math.PI/2, true);
a.fill = colors[i];
//a.hachureAngle = Math.random() * 360;
});
// Labels
arcs.forEach(function(d) {
var c = labelArc.centroid(d);
context.fillText(d.data, dx*(k+1)+c[0], dy+c[1]);
console.log("Agregando label " + d.data + " en (" + Math.round(dx*(k+1)+c[0]) + "," + Math.round(dy+c[1])+")");
});
context.fillText(twData[k].concept,dx*(k+1), dy+100)
console.log("Agregando label " + twData[k].concept + " en (" + Math.round(dx*(k+1)) + "," + Math.round(dy+100)+")");
} //for
</script>
感謝です!
YAY! :D これで、すべてのチャートで最後のタプルが設定されましたが、確かにそれを処理できます。 ありがとう! – Vladimir