【问题标题】:Creating stacked charts in dc js with panel dataset使用面板数据集在 dc js 中创建堆叠图表
【发布时间】:2015-09-17 12:46:42
【问题描述】:

我在创建堆叠条形图时遇到问题,我不知道如何正确地将维度应用于面板数据集

我的数据如下所示:

Date     name   value
12/1/15 name1  5
12/1/15 name2  6
12/1/15 name3  2

13/1/15 name1  2
13/1/15 name2  7
13/1/15 name3  8

14/1/15 name1  2
14/1/15 name2  5
14/1/15 name3  10

以 JSON 格式存储

我想创建堆叠图表,绘制随时间推移与不同名称相关联的值。

据我了解 dc-js,我需要提供一个带有日期维度的图表,然后提供另一个具有不同名称的维度,然后对这些值进行分组,但是我不确定如何继续。

有谁知道我该怎么做?

【问题讨论】:

    标签: javascript d3.js dc.js


    【解决方案1】:

    以下是创建组的方法,来自the FAQ

    var group = dimension.group().reduce(
        function(p, v) { // add
            p[v.type] = (p[v.type] || 0) + v.value;
            return p;
        },
        function(p, v) { // remove
            p[v.type] -= v.value;
            return p;
        },
        function() { // initial
            return {};
        });
    

    (在您的情况下,v.name 而不是 v.type。)

    基本上,您创建一个组,该组减少为包含每个堆栈值的对象。

    然后使用.group().stack()的名称和访问器参数。不幸的是,你必须把它拼出来,因为第一个必须是.group,其余的必须是.stack

    这样:

    chart.group(group, 'name1', function(d) { return d.name1; })
       .stack(group, 'name2', function(d) { return d.name2; })
       .stack(group, 'name3', function(d) { return d.name3; })
       ...
    

    (在 SO 或网络上的某处是这种循环形式,但我在 ATM 上找不到。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2012-05-10
      • 2014-02-28
      • 1970-01-01
      • 2014-08-26
      • 2018-06-17
      相关资源
      最近更新 更多