首页
学习
活动
专区
圈层
工具
发布

D3弧梯度
EN

Stack Overflow用户
提问于 2013-08-13 07:23:06
回答 1查看 6K关注 0票数 8

我正在尝试使用d3创建一个计时器,它有一个在0到100%之间变化的梯度。例如,深橙色为0%,浅橙色为100%。我可以在深橙色和浅橙色之间进行弧形过渡,但是找不到任何可以让我将渐变应用到弧形上的东西。我正在尝试实现的一个示例可以在下面的图像中看到。

我已经苦苦思索了一天左右,试图实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2013-08-13 23:54:30

SVG不允许这些类型的渐变。我以前做过非常类似的事情,我创建了一个“甜甜圈图表”,其中每个楔子都是不同的颜色:

http://jsfiddle.net/duopixel/GfVrK/

代码语言:javascript
复制
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; });
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18198252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档