因此,有一个线图工作正常,所以现在我试图添加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
我不知道如何处理这个错误。
编辑一下。看现在我就能用了。
对不起,这不是一个完整的答案,因为我没有时间为你调试你的项目。我已经诊断出具体问题,我只有一个建议。
你遇到的具体问题是,你把两个不同的图表初始化到同一个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只有一个图表应该更容易,尤其是线图功能是复合图的一个严格的子集。