【发布时间】:2015-06-06 11:24:43
【问题描述】:
我希望我使用了正确的术语,但基本上我试图在 D3 中的饼图顶部创建突出显示。我见过很多添加阴影的方法,但无法将其用作高光。因此,我尝试在图表顶部添加弧线并为其添加高斯模糊,但存在两个问题:它不会与图表的其余部分一起过渡,并且突出显示在图表上方,我可以'似乎无法让它停留在图表的边缘。
这是一个例子:http://jsfiddle.net/hf3adsj5/
我用来尝试添加高亮的代码如下:
var arc2 = d3.svg.arc()
.innerRadius(innerRadius)
.outerRadius(outerRadius)
.startAngle(Math.PI/4)
.endAngle(-7/12*Math.PI);
var filter2 = defs.append("filter")
.attr("id","highlight");
filter2.append("feGaussianBlur")
.attr("in","SourceAlpha")
.attr("stdDeviation",2)
.attr("result","blur");
filter2.append("feColorMatrix")
.attr("in", "blur")
.attr("type", "matrix")
.attr("values", "0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0")
.attr("result", "whiteblur");
filter2.append("feOffset")
.attr("in","whiteblur")
.attr("dx",3)
.attr("dy",3)
.attr("result","offsetBlur");
var feMerge2 = filter2.append("feMerge");
feMerge2.append("feMergeNode")
.attr("in","offsetBlur");
feMerge2.append("feMergeNode")
.attr("in","SourceGraphic");
svg.append("path")
.attr("d",arc2)
.style("filter","url(#highlight)");
有没有办法在不添加额外弧的情况下做到这一点?或者至少让它像投影一样过渡?
【问题讨论】:
-
饼图过渡效果如何?你能创建一个重新创建问题的 jsFiddle 或 Plunker 吗?
标签: svg d3.js svg-filters