在这个线程中,Mike Bostock 解释说设置画笔的范围和重绘画笔是两个独立的操作。我明白这一点,但我无法弄清楚细节。
他说您需要执行以下操作:
brush.extent([0.2, 0.8]);
svg.select(".brush").call(brush);
但是,当我执行时call(brush)
,它只是在新范围上绘制画笔矩形。“焦点”图表永远不会更新。但是,如果我调用我brushed
的函数(我分配给我的画笔的函数),它就可以工作。
好像call(brush)
没有执行brushed
。我如何让它执行这个功能?
更新:这是我的代码的一个小提琴。运行它时,请注意画笔已正确绘制,但焦点未更新。取消注释第 180 行,焦点也被重新绘制。
(当然,最终我会想从图表对象外部执行此操作,但现在我在内部执行此操作只是为了找出问题所在。)
本质上,我在问:如何brushed
从对象外部触发函数?画笔事件处理程序是如何做到的?