J'ai essayé d'adapter ce design dans un graphique circulaire dynamique.mise à jour de la position du texte sur la mise à jour du diagramme à secteurs
Tout s'est bien passé en dehors de l'obtention du texte à repositionner lors de la mise à jour. Dans l'exemple ci-dessous, je supprime d'abord l'étiquette de texte, puis je redessine, je ne pense pas que ce soit la meilleure façon de le faire, j'essayais de l'approcher avec le code qui est commenté juste en dessous mais ont échoué.
code en question;
function updatePath() {
g = svg.datum(donutData).selectAll(".arc")
.data(pie)
g.select("path")
.transition()
.duration(750)
.attrTween("d", arcTween) // redraw the arcs
svg.selectAll(".donutText").remove()
pieTextLabel()
}
// Attempt 1 Below
/*
svg.selectAll(".donutText")
.style("opacity", 0)
.attr("dy", 18)
.append("textPath")
.attr("startOffset", "50%")
.style("text-anchor", "middle")
.attr("xlink:href", function(d, i) {
return "#donutArc" + i;
})
.text(function(d) {
return d.value;
})
.transition()
.duration(1000)
.style("opacity", 1);
*/
function pieTextLabel() {
var selectText = svg.selectAll(".donutText")
.data(donutData)
selectText
.enter().append("text")
.attr("class", "donutText")
.attr("dy", 18)
.append("textPath")
.attr("startOffset", "50%")
.style("text-anchor", "middle")
.attr("xlink:href", function(d, i) {
return "#donutArc" + i;
})
.text(function(d) {
return d.value;
});
selectText.exit().remove()
}
function drawPie() {
var g = svg.selectAll(".donutArcSlices")
.data(pie(donutData))
.enter().append("g")
.attr("class", "arc");
var path = g.append("path")
.attr("d", arc)
.style("fill", function(d) {
return color(d.data.label);
})
.each(function(d, i) {
this._current = d;
var firstArcSection = /(^.+?)L/;
var newArc = firstArcSection.exec(d3.select(this).attr("d"))[1];
newArc = newArc.replace(/,/g, " ");
svg.append("path")
.attr("class", "hiddenDonutArcs")
.attr("id", "donutArc" + i)
.attr("d", newArc)
.style("fill", "none");
})
}
Si vous rencontrez des difficultés à trouver une solution, nous vous saurions gré de nous aider.
Merci
Salut - Merci cela fonctionne :) Je me demandais cependant s'il y aurait un moyen pour le texte à apparaître lors de la mise à jour? Au lieu d'attendre que les chemins finissent de dessiner avant de tirer la commande? Mis à jour le [plnk] (http://plnkr.co/edit/Ecmcz1ayE0uI037BHRYd?p=preview) un peu pour ajouter un peu de décoloration – alexc101
Désolé, je ne suis pas très bon avec la transition, mais peut-être qu'il est possible de faire la même chose que vous avez fait pour l'arc, mais cette fois pour le chemin –