【发布时间】:2014-03-23 07:04:51
【问题描述】:
我正在使用 d3.js - 我这里有一个饼图。但问题是当切片很小时 - 标签重叠。展开标签的最佳方式是什么。
这是标签的代码。我很好奇 - 是否可以用 d3 模拟 3d 饼图?
//draw labels
valueLabels = label_group.selectAll("text.value").data(filteredData)
valueLabels.enter().append("svg:text")
.attr("class", "value")
.attr("transform", function(d) {
return "translate(" + Math.cos(((d.startAngle+d.endAngle - Math.PI)/2)) * (that.r + that.textOffset) + "," + Math.sin((d.startAngle+d.endAngle - Math.PI)/2) * (that.r + that.textOffset) + ")";
})
.attr("dy", function(d){
if ((d.startAngle+d.endAngle)/2 > Math.PI/2 && (d.startAngle+d.endAngle)/2 < Math.PI*1.5 ) {
return 5;
} else {
return -7;
}
})
.attr("text-anchor", function(d){
if ( (d.startAngle+d.endAngle)/2 < Math.PI ){
return "beginning";
} else {
return "end";
}
}).text(function(d){
//if value is greater than threshold show percentage
if(d.value > threshold){
var percentage = (d.value/that.totalOctets)*100;
return percentage.toFixed(2)+"%";
}
});
valueLabels.transition().duration(this.tweenDuration).attrTween("transform", this.textTween);
valueLabels.exit().remove();
【问题讨论】:
-
与您在此处所做的标记图表类似的问题 Lars - jsfiddle.net/Qh9X5/1234 - 我添加了更多数据以显示类似问题
-
关于“3D 饼图”问题:需要大量额外的工作才能使阴影和一切都正确,而且所有这些都是为了一个非常难以阅读的图形。我不会推荐它!
-
顺便说一句,我鼓励你阅读this help page article on creating simplified working examples。您的小提琴中有大量与标签位置无关的东西,这会让其他人难以处理。
标签: javascript charts d3.js pie-chart