【发布时间】:2020-02-19 11:16:12
【问题描述】:
我有各种各样的数据,我用它来创建一个圆环图。我想使用数据细分制作饼图,我使用 d3.nest 获得了该数据以细分我拥有的数据(它目前分为 3 类:nest 将其分为 129 个)。基本上,我有基于获得奖牌的奥运会数据,我想将有关互动的数据细分为他们在哪些运动中获得。
我只是不确定如何使用嵌套数据来创建饼图,尤其是在键是可变的情况下。我将包括我的圆环图实现。
var pie = d3.pie();
// color based on medal awarded
// order: gold, silver, bronze
var color = d3.scaleOrdinal()
.range(['#e5ce0c', '#e5e4e0', '#a4610a']);
var arcs = d3.select(svg).selectAll("g.arc")
.data(pie(data))
.enter()
.append("g")
.attr("class", "arc")
.attr("transform", "translate(" + (w/2) + "," + ((h-25)/2) + ")");
arcs.append("path")
.attr("fill", function(d, i) {
return color(i);
})
.attr("d", arc)
.attr("stroke", "white")
.style("stroke-width", "0.5px")
.on('mouseover', function(d) {
d3.select(this).attr('opacity', .7);
})
.on('mouseleave', function(d) {
d3.select(this).attr('opacity', 1);
});
// title
d3.select(svg).append('text')
.attr('x', function(d) {
return ((w/2) - 85);
})
.attr('y', '20')
.text(function(d) {
return ('Medal breakdown for ' + country);
})
.attr('font-size', '16px');
arcs.append("text")
.attr("transform", function(d) {
return "translate(" + arc.centroid(d) + ")";
})
.attr("text-anchor", "middle")
.text(function(d) {
return d.value;
});
【问题讨论】:
-
你能告诉你正在使用的数据集的结构吗?
-
它基本上只是一个运动列表 -> 价值,也就是该类型的奖牌数量
-
我添加了一个格式来了解您的确切格式?如果不能,您也可以在您的问题中发布格式。因为它很难像这样理解以及为什么需要使用 d3.nest。
标签: javascript d3.js nested pie-chart