为分组的条形图设置域时出错

时间:2019-04-21 08:33:09

标签: javascript d3.js bar-chart data-visualization

我正在通过d3.js制作组条形图,但收到一个错误,我无法找出原因。我仍然是d3.js的新手,并且正在尝试自己学习脚本。社区的任何帮助将不胜感激。

错误是由这段代码引起的:

y.domain([0, d3.max(data, function(s_category) { 
    return d3.max(s_category.values, 
        function(d) { 
            return d.count; }); 
    })
]);

错误:

  

未捕获的TypeError:无法读取未定义的属性'length'

以下是我的完整代码:

https://blockbuilder.org/lydiawawa/9efb5df76c08640316efbef702437db7

在图上,计数应为y轴,drug_c为x轴,而s_category确定条形图的组。

1 个答案:

答案 0 :(得分:1)

鉴于您的数据结构只是对象的平面阵列,因此获取域的代码片段毫无意义。

但是,知道这一点:

  1. 这是一个分组的条形图,并且...
  2. 您在代码的更下方使用了values

在我看来,您打算使用nest生成器,如下所示:

const nestedData = d3.nest()
    .key(function(d){return d.s_category})
    .entries(data);

这是您所做的更改的代码:http://bl.ocks.org/GerardoFurtado/80ba2580f758a64046c3e6f513203cd2/7aa3816ad65ed09bd99eeb29ba80892e19cdcbd0


PS:带刻度的填充以及颜色的带刻度的使用是错误的(应该是顺序的)。另外,我删除了图例,您必须修复该代码段。