Javascript Can';t去除D3和x27中的旋转;s射线树布局
我有这个D3放射状树形图,我需要的是图像不旋转,而是笔直地显示在一起,对应的蓝色圆圈。代码是否在Codepen中工作,我将其复制到此处:Javascript Can';t去除D3和x27中的旋转;s射线树布局,javascript,d3.js,Javascript,D3.js,我有这个D3放射状树形图,我需要的是图像不旋转,而是笔直地显示在一起,对应的蓝色圆圈。代码是否在Codepen中工作,我将其复制到此处: var radius = 960 / 2; var tree = d3.layout.tree() .size([360, radius - 120]) .separation(function (a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; }); var diagonal =
var radius = 960 / 2;
var tree = d3.layout.tree()
.size([360, radius - 120])
.separation(function (a, b) { return (a.parent == b.parent ? 1 : 2) / a.depth; });
var diagonal = d3.svg.diagonal.radial()
.projection(function (d) { return [d.y, d.x / 180 * Math.PI]; })
var vis = d3.select('#graph').append('svg:svg')
.attr('width', radius * 2)
.attr('height', radius * 2 - 150)
.append('g')
.attr('transform', 'translate(' + radius + ',' + radius + ')');
d3.json('flare2.json', function (json) {
var nodes = tree.nodes(json);
var link = vis.selectAll('path.link')
.data(tree.links(nodes))
.enter().append('path')
.attr('class', 'link')
.attr('d', diagonal);
var node = vis.selectAll('g.node')
.data(nodes)
.enter().append('g')
.attr('class', 'node')
.attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; });
node.append('circle')
.attr('r', 4.5);
node.append('image')
.attr('xlink:href', 'img/avatar.40.gif')
.attr('width', 40)
.attr('height', 40)
.attr('x', 10);
node.append('image')
.attr('xlink:href', 'img/avatar.41.gif')
.attr('width', 40)
.attr('height', 40)
.attr('x', 50 );
});
节点已旋转
.attr("transform", function(d) { return "rotate(" + (d.x - 90) + ")translate(" + d.y + ")"; })
并将图像附加到节点
node.append('image')
因此,您需要将图像旋转回来
.attr("transform", function(d) { return "rotate(" + (90 - d.x) + ")"; })
我不确定您想要如何定位它们,但您需要在x
和y
上翻译它们
请参见一个工作示例:是否可以不旋转节点,而反向旋转节点上的元素?当我尝试这样做时,我的链接和节点会变得疯狂。安卓,我不清楚你想要实现什么。你能举个例子或者更详细地描述一下吗?试着在不旋转节点的情况下实现同样的最终结果。这不是一个真正的功能问题,只是我的一个不满。我想我可以尝试指定x/y值,而不是使用旋转。但我不是故意要劫持线程。