我已经建立了这个形状(我称之为管道)从两个圆圈建立和路径:http://jsfiddle.net/gluz/4udR2/3/embedded/result/ 代码:怎样绘制管道,使之互动
var svg = d3.select("body").append("svg")
.attr("width", 1200)
.attr("height", 800);
var circle1 = svg.append("circle").attr("cx", 320).attr("cy", 171).attr("r", 37).style("fill", "#CDDE3A");
var shapeCoordinates = [{"x":254,"y":370},{"x":352,"y":189},{"x":284,"y":162},{"x":235,"y":363}];
var coordinatesFunction = d3.svg.line()
.x(function(d) { return d.x; })
.y(function(d) { return d.y; })
.interpolate("linear-closed");
var lineGraph = svg.append("path")
.attr("d", coordinatesFunction(shapeCoordinates))
.attr("stroke", "blue")
.attr("stroke-width", 0)
.attr("fill", "#CDDE3A")
.style("opacity","0.2");
var circle2 = svg.append("circle").attr("cx", 245).attr("cy", 365).attr("r", 10).style("fill", "#CDDE3A").style("opacity", 0.2);
我想使它互动。 对于初学者,我想,当它看起来会像从下面的方式一小圈,但在第一个例子中的影子建:http://jsfiddle.net/gluz/jeRgz/embedded/result/ 代码:
var svg = d3.select("body").append("svg")
.attr("width", 1200)
.attr("height", 800);
var circle1 = svg.append("circle").attr("cx", 245).attr("cy", 365).attr("r", 10).style("fill", "#CDDE3A");
var circle2 = svg.append("circle").attr("cx", 245).attr("cy", 365).attr("r", 10).style("fill", "#CDDE3A").style("opacity", 0.2);
circle1.transition().duration(3000)
.attr("cx", 320)
.attr("cy", 171)
.attr("r", 37)
.style("opacity", 1.0);
我的问题是:1。 如何我可以一起做路径对象的圆的过渡吗? 2.有没有办法将它建成一个形状? 3.我如何让小圆圈不显示它下面的内容,所以它不会像第一个例子中那样拼接成两个?
谢谢!
关于2.,是的,你可以使它成为一个单一的对象,我使用'path'元素并给它一个适当的'd'属性。这应该照顾3.并使1.更容易。 –
关于使用单个“路径”元素渲染形状的附加提示:正交地绘制此形状(例如,在Y轴上对称,两个圆的中心具有零坐标)可能会相当简单,然后应用在路径上使用'transform'属性进行旋转。 – meetamit
但是,如何在路径元素中绘制一条直线跟随弧? (据我所知,这是我应该这样做,以创建一个形状) – Gluz