无法进行交叉过滤

问题描述 投票:1回答:1

因此,有一个线图工作正常,所以现在我试图添加2个更多的图形,以便我可以看到他们之间的相互作用,通过交叉过滤。

当我从条形图中选择范围间隔时,我得到了这样的结果。错误。

VM357 dc.js:3697 Uncaught TypeError: Cannot read property 'domain' of undefined
    at prepareXAxis (VM345 dc.js:3697)
    at drawChart (VM345 dc.js:4426)
    at Object._chart._doRedraw (VM345 dc.js:4415)
    at Object._chart.redraw (VM345 dc.js:2138)
    at Object.dc.redrawAll (VM345 dc.js:279)
    at Object._chart.redrawGroup (VM345 dc.js:2190)
    at Object._chart.applyBrushSelection (VM345 dc.js:4296)
    at VM345 dc.js:4289
    at VM345 dc.js:1241

工作演示+代码。

https:/blockbuilder.orgninjakxad4ab375e1a14f3e151c5b13a60ecef5。

该线图有2种类型。

1) composite chart 其定义如下 function comp_chart (线路号:396-434)

2) Single Line chart 旁边定义的。

所以,所有的图形都会在 第558行.这2种线型图是在以下情况下呈现的 function setup() 行号:529 还。

bar chart 定义为 composite2

我不知道如何处理这个错误。

编辑一下。看现在我就能用了。

enter image description here

dc.js
1个回答
1
投票

对不起,这不是一个完整的答案,因为我没有时间为你调试你的项目。我已经诊断出具体问题,我只有一个建议。

你遇到的具体问题是,你把两个不同的图表初始化到同一个div中,但每次只有一个是活动的。

var composite = dc.compositeChart("#line-chart");
var composite2 = dc.barChart("#line-chart2");

var linechart = dc.lineChart("#line-chart")

当你开始的时候,你的综合图表初始化在... ... #line-chart但另一个线图没有被初始化。不幸的是,dc.js仍然会尝试绘制它!所以这就是为什么它崩溃的原因。所以这就是为什么它会崩溃。

我的建议是只使用复合图,当你显示一个单独的状态时,只用一个子图重新初始化它。

否则你就得经历从图表注册表中添加和删除图表的繁琐过程,这很容易出错。

注意,如果你先切换到单个状态,然后在柱状图上进行过滤,就不会出现同样的错误,但你的图例切换代码反而会遇到问题,因为即使复合图已经不存在了,它仍然在试图重新更新复合图。

我想,要把你所有的代码都限制在div中哪个图表是活动的,这将是一个令人头疼的问题,而每个div只有一个图表应该更容易,尤其是线图功能是复合图的一个严格的子集。

© www.soinside.com 2019 - 2024. All rights reserved.