【问题标题】: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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多