如果条件为真,如何制作面积图,否则制作折线图?

时间:2014-03-06 18:18:47

标签: charts d3.js conditional-statements

我正在使用D3.JS创建一个仪表板,用户可以从列表中选择要绘制的变量数。如果用户选择一个或两个变量,我想创建一个面积图。如果用户选择两个以上的变量,那么我想只创建面积图的边缘(即折线图)。我知道在创建折线图的代码中不需要进行任何更改。如何将条件语句添加到绘制面积图的代码部分?

我的数据有以下形式:

entries = [ { "key":"variable A", "value":[..] }, { "key":"variable B", "value":[..] } ]

我创建了一个“for”来迭代对象并计算用户选择了多少变量。要绘制的变量数存储在“count”

focus.selectAll("path.area")
    .data(entries)
    .enter()
    .append("path")
    .attr("class", "area")
    .attr("d", function (d) { return ( areasFocus(d.value) )})
    .style("fill", function (d) { return ( color(d.key) ) });

我试图用

替换最后两个句子
.attr("d", function (d) { return (count<=2? areasFocus(d.value):areasFocus() )})
.style("fill", function (d) { return (count<=2? color(d.key) : color()) });

但是,我在控制台中收到错误,告诉我“无法读取未定义的属性'长度”并且代码中断了。

我怀疑问题出在条件陈述中。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

条目变量中的任何内容都不包含length属性。好像你想得到一些数组/列表的长度和不是数组/列表的对象。

答案 1 :(得分:0)

我发现问题出现在if句子中,当条件为假时我需要做什么&#34;没有&#34;。我的错误是没有参数调用ares.Focus()。