【问题标题】:d3 find first entry of data categoryd3 找到数据类别的第一个条目
【发布时间】:2015-12-13 14:54:51
【问题描述】:
我正在制作一个 d3 图表,并尝试执行以下操作:
我有不同的类别,我只想在第一次出现时才显示类别标签(因为无论如何我都是按类别排序的)。
我试过这个:
d.isFirstInstanceOfCategory = (i === 0 || d.Kategorie !== data[i-1].Kategorie);
但这只是检查前面的数据条目是否与当前的相同。但是我需要检查的是它是否是所有先前条目中的第一个。
有人可以帮忙吗?
谢谢
【问题讨论】:
标签:
javascript
d3.js
visualization
【解决方案1】:
我还没有足够的声誉来发表评论,所以如果需要更多信息,我会更新我的答案。如果它已经排序,那么它不应该是所有前面条目中的第一个。如果未排序,那么您可以根据类别项目的数量创建另一个数组,并在首次出现时标记类别。
d.isFirstInstanceOfCategory = (i === 0 || d.Kategorie !== data[i-1].Kategorie && d.Kategorie.NotAlreadyFlagged)
以下是一些用于排序的选项,但您似乎已经掌握了这些选项。
1) Sortable Bar Chart
svg.selectAll(".bar")
.sort(function(a, b) { return x0(a.letter) - x0(b.letter); });
2)D3 sort() with CSV data
function render(d3Comparator) {
if(d3Comparator) data = data.sort(function(a, b) {
return d3[d3Comparator](a.expense, b.expense);
});
<button onclick="render('ascending')">Sort ascending!</button>
<button onclick="render('descending')">Sort descending!</button>