为什么我的 .data 函数在饼图中有效,但在 dc.js 中的折线图中无效?

Why does my .data function work in pieChart but not in lineChart in dc.js?

我想为不在交叉过滤器中的维度绘制数据,所以我不得不使用 .data。

pieChart 一切正常,但是当我切换到 lineChar 时出现错误 p is undefined (Firefox) 或 Cannot read property y of undefined (Chrome)。我尝试遵循代码,但有点迷失其中。你能告诉我哪里出了问题吗?

<div id="test"></div>
<script>    
    dc.barChart("#test")
        .width(100).height(100)
        .dimension({})
        .group({})
        .x(d3.scale.linear().domain([0,5]))
        .data(function(){
            return [ 
                {key : 0, value : 4},
                {key : 2, value : 14},
                {key : 3, value : 20},
            ];
        });

    dc.renderAll();
</script>

如果您执行 pieChart 并注释掉 .x

,则代码有效

这是一个jsfiddle,注意脚本是从rawgit.com加载的:http://fiddle.jshell.net/fyy5m26r/1/

抱歉,您将无法通过合理的努力将 .data() 与条形图或折线图一起使用,因为 dc.js uses .data() internally 在这种情况下,您将不得不调用d3.stack 自己创建它期望的数据。

相反,我建议您创建一个 "fake group"。您可以使用

内联执行此操作
.group({all: function() { ... }})

而不是

.data(function() {...})

或者,使用您的示例代码:

dc.barChart("#test")
    .width(200).height(200)
    .dimension({})
    .x(d3.scale.linear().domain([0,5]))
    .group({all: function(){
        return [ 
            {key : 0, value : 4},
            {key : 2, value : 14},
            {key : 3, value : 20},
        ];
    }});

您的 fiddle 分支:http://fiddle.jshell.net/gordonwoodhull/4Lf8n7pn/8/