【发布时间】:2020-11-03 02:56:31
【问题描述】:
我正在尝试沿弧形路径为圆设置动画。下面的链接给出了我正在尝试做的一个很好的例子(除了例子中的路径不是弧线)。
http://bl.ocks.org/JMStewart/6455921
我有以下代码块,它构建了我想将圆附加到的弧。
function renderOne(innerRadius) {
var width = 1250,
height = 1250,
colors = d3.scale.category20();
var svg = d3.select("#arcOne").append("svg")
.attr("height", height)
.attr("width", width);
var dataArc = [
{startAngle: -0.5 * Math.PI, endAngle: 0.5 * Math.PI},
];
var arc = d3.svg.arc().outerRadius(625).innerRadius(innerRadius);
svg.select("g").remove();
svg.append("g")
.attr("transform", "translate(625,625)")
.selectAll("path.arc")
.data(dataArc)
.enter()
.append("path")
.attr("class", "arc")
.style("stroke", "rgb(53,154,204))")
.style("stroke-width", 5)
.style("fill", "black") //"none"
.style("opacity", .7)
.transition().duration(2000)
.attrTween("d", function (d) {
var start = {startAngle: -0.5 * Math.PI, endAngle: -0.5 * Math.PI} // <-A
var interpolate = d3.interpolate(start, d); // <-B
return function (t) {
return arc(interpolate(t)); // <-C
};
})
}
renderOne(1250);
#arcOne {
position: absolute;
top: 50px;
left: 25px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js"></script>
<div id="arcOne"></div>
任何帮助将不胜感激。我觉得我需要以某种方式使用 d3.svg.arc() 但我无法正确解决它。
【问题讨论】:
-
我刚刚尝试了您的代码,但对我不起作用
-
@A. RAZIK 如果这改变了任何东西,我只是添加了 css。您正在运行 d3 第 3 版吗?
-
是的,我包括 D3v3 请参阅:jsfiddle.net/mq7Lfwju
-
只需添加一个像“黑色”这样的填充属性,然后你就会看到你的补间动画:我编辑了你的问题和来自@A.RAZIK 的小提琴:jsfiddle.net/alexander_L/y2vscpx1/1 - 到目前为止你还没有追加任何圆圈,所以路径本身是补间/动画而不是任何圆圈。您需要将补间添加到附加的圆圈中才能获得该效果。
标签: javascript d3.js svg data-visualization