我正在尝试使用 d3 创建一个计时器,它的渐变将在 0 到 100% 之间变化。例如,0% 为深橙色,100% 为浅橙色。我可以在深橙色和浅橙色之间进行弧形过渡,但是在找到任何可以让我对弧形应用渐变的东西时遇到问题。在下图中可以看到我正在尝试实现的一个示例。
一直在搜索/煎我的大脑试图实现这一天左右。
我正在尝试使用 d3 创建一个计时器,它的渐变将在 0 到 100% 之间变化。例如,0% 为深橙色,100% 为浅橙色。我可以在深橙色和浅橙色之间进行弧形过渡,但是在找到任何可以让我对弧形应用渐变的东西时遇到问题。在下图中可以看到我正在尝试实现的一个示例。
一直在搜索/煎我的大脑试图实现这一天左右。
SVG 不允许这种渐变。我之前做过非常相似的事情,我创建了一个“甜甜圈图”,其中每个楔形都是不同的颜色:
http://jsfiddle.net/duopixel/GfVrK/
var arc, data, padding, steps = 2, r=400/2, pi = Math.PI;
var padding = 2 * r / 200;
arc = d3.svg.arc()
.innerRadius(r-40)
.outerRadius(r).startAngle(function(d) { return d.startAngle; })
.endAngle(function(d) { return d.endAngle; });
data = d3.range(180).map(function(d, i) {
i *= steps;
return {
startAngle: i * (pi / 180),
endAngle: (i + 2) * (pi / 180),
fill: d3.hsl(i, 1, .5).toString()
};
});
d3.select("#wheel")
.insert('svg', 'svg')
.attr("id", "icon")
.append('g')
.attr("transform", "translate(" + r + "," + r + ") rotate(90) scale(-1,1)")
.selectAll('path')
.data(data)
.enter()
.append('path').attr("d", arc)
.attr("stroke-width", 1)
.attr("stroke", function(d) { return d.fill;})
.attr("fill", function(d) { return d.fill; });