【发布时间】:2015-06-26 12:41:28
【问题描述】:
“d3-circle-text”插件在静态 circle-pack 上运行良好(非常感谢 musicly-ut 贡献了 https://github.com/musically-ut/d3-circle-text)。然而,在一个可缩放的圆形包上,标签会在这个地方飞来飞去(在小提琴中,它们保持静止而不是在缩放时重新定位)。
是否可以让圆圈文本随圆圈一起缩放? (如果插件不能缩放,没关系。我会尝试另一种标记方法。)
这是我正在处理的代码部分:
////////////Circle text
var circleText = d3.circleText()
.radius(function(d) {
return d.r - 5;
})
.value(function(d) {
return d.key; //Get lables
})
.method('align')
.spacing('exact')
.precision(0.1)
.fontSize('100%');
var gTexts = svg.selectAll('g.label')
.data(pack.nodes) //Returns names
.enter()
.append('g')
.classed('label', true)
.attr('transform', function(d) {
return 'translate(' + d.x + ',' + d.y + ')';
});
/*.attr("x", function (d) { return d.x; })
.attr("y", function (d) { return d.y; }); */ An attempt - not working
/*.attr("cx", function (d) { return d.x; })
.attr("cy", function (d) { return d.y; }); */ An attempt - not working
//Only put on 'parent' circles
gTexts.filter(function(d) {
return !!d.children;
})
.call(circleText)
//.style('fill', 'white');
这是一个完整的小提琴:http://jsfiddle.net/cajmcmahon/9a5xaovv/1/
感谢您的帮助。
【问题讨论】:
-
那个插件是很久以前写的,我认为当时 SVG 对 textPath 的支持有点粗略。我会调查这个问题,看看现在最好的方法是什么。
标签: d3.js zooming circle-pack