【发布时间】:2017-03-17 01:59:56
【问题描述】:
我是 D3.js 的新手,开始学习饼图。我正在尝试创建投影或添加 3d 形状。我可以让阴影出现,但现在馅饼的每一片都有自己的。是否可以让整个馅饼使用阴影而不是每个单独的切片?我希望让它边缘锐利,没有模糊和一种颜色。
首先,我一直在使用已包含在其他帖子中的 example。请让我知道这是否可以通过阴影实现,或者是否有其他方法可以获得此 3D 形状。谢谢。
片段
var width = 500,
height = 500,
radius = Math.min(width, height) / 2.5;
var color = d3.scale.ordinal()
.range(["#ED5545","#ED933A","#337382","#EDD55D","#64B5CE","#AA2731","#F7B166","#7DD886"])
var arc = d3.svg.arc()
.outerRadius(radius - 40)
.innerRadius(0);
var pie = d3.layout.pie()
.sort(null)
.value(function(d) { return d.amount; });
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(" + width / 2 + "," + height / 2 + ")");
//Drop Shadow
var defs = svg.append("defs");
var filter = defs.append("filter")
.attr("id", "dropshadow")
filter.append("feGaussianBlur")
.attr("in", "SourceAlpha")
.attr("stdDeviation", 0)
.attr("result", "blur");
filter.append("feOffset")
.attr("in", "blur")
.attr("dx", 0)
.attr("dy", 15)
.attr("result", "offsetBlur");
filter.append("feFlood")
.attr("in", "offsetBlur")
.attr("flood-color", "#93864d")
.attr("flood-opacity", "1")
.attr("result", "offsetColor");
filter.append("feComposite")
.attr("in", "offsetColor")
.attr("in2", "offsetBlur")
.attr("operator", "in")
.attr("result", "offsetBlur");
var feMerge = filter.append("feMerge");
feMerge.append("feMergeNode")
.attr("in", "offsetBlur")
feMerge.append("feMergeNode")
.attr("in", "SourceGraphic");
//CSV
d3.csv("foodData.csv", function(error, data) {
data.forEach(function(d) {
d.amount = +d.amount;
});
var g = svg.selectAll(".arc")
.data(pie(data))
.enter().append("g")
.attr("filter", "url(#dropshadow)")
.attr("class", "arc");
g.append("path")
.attr("d", arc)
.style("fill", function(d) { return color(d.data.food); });
});
.arc path {
stroke: #93864d;
stroke-width: 3;
}
food,amount
Pizza,30
Burgers,20
Seafood,2
Junk,17
bbq,7
Other,4
Mexican,10
Vegetables,3`
【问题讨论】:
-
您能提供给我们您目前编写的代码吗?
-
@user2896976 我刚刚在帖子中添加了代码。如果有点混乱,我很抱歉。这是我第一次使用堆栈溢出。底部是css和csv。如果还需要什么,请告诉我。感谢您的回复。
标签: javascript d3.js pie-chart dropshadow