【问题标题】:How to show only limited number of records in box plot dc.js如何在箱线图 dc.js 中仅显示有限数量的记录
【发布时间】:2020-05-24 14:30:06
【问题描述】:

我想显示最近的 10 个箱形图。

如果将过滤器应用于条形图或折线图,则箱线图应根据这些过滤器显示最近的 10 条记录。

我按日期(序数)制作维度。但我无法得到结果。

我不知道如何处理假组。我是 dc.js 的新手。

附上场景图片。如果有人需要更多详细信息来帮助我,请告诉我。

在图像中我尝试了一些时间尺度的解决方案。

【问题讨论】:

    标签: d3.js dc.js crossfilter


    【解决方案1】:

    您可以使用两个假组来执行此操作,一个用于删除空箱形图,另一个用于获取结果数据的最后 N 个元素。

    删除空箱形图:

      function remove_empty_array_bins(group) {
        return {
          all: function() {
            return group.all().filter(d => d.value.length);
          }
        };
      }
    

    这只是过滤垃圾箱,删除 .value 数组长度为 0 的任何地方。

    取最后N个元素:

      function cap_group(group, N) {
        return {
          all: function() {
            var all = group.all();
            return all.slice(all.length - N);
          }
        };
      }
    

    这基本上就是 cap mixin 所做的,除了没有为“others”创建一个 bin(这有点棘手)。

    我们从原始组中取出数据,看看它有多长,然后从all.length - N 到最后的slice 那个数组。

    在将它们传递到图表时将它们链接在一起:

      chart
        .group(cap_group(remove_empty_array_bins(closeGroup), 5))
    

    我使用 5 而不是 10,因为我要处理的数据集较小。

    Demo fiddle.

    此示例使用“实时”时间刻度而不是序号日期。有几种方法可以进行序号日期,但如果您的组仍然从低日期到高日期排序,这应该仍然有效。

    如果没有,您必须编辑您的问题以包含您用于生成序数日期组的代码示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-02
      • 2014-08-23
      相关资源
      最近更新 更多