TL; DR::如何移动d3.select('#a_brush')
?
我在<g>
组的axes
组中有画笔。每个<g>
轴包含一个d3轴和一个d3画笔。在axes
的更新选择中,我要更新d3轴和笔刷。
axes.each(function (d) { d3.select(this).select('.axis').call(d3.axisBottom(d[1])) });
axes.each(function (d) { d3.select(this).select('.brush').call(brush.move, f(d)) });
在上面,axes
是更新选择。假设f(d)
产生一个适当的数组。两行中的第一行有效,但第二行抛出:
Uncaught TypeError: Cannot read property 'move' of undefined
那可能是因为我没有保存任何名为brush的变量。我希望直接在所选内容上调用.move
方法,而不必保存画笔变量。
什么是在选择中移动笔刷的合适命名法
axes.each(function (d) { d3.select(this).select('.brush') ?? ... somehow move the brush to f(d) ...
.call(brush.move
带有保存的brush
变量。 d3.select(this).call(d3.event.target.move,
,但我可能不会从最近的d3事件中移开画笔。 答案 0 :(得分:2)
您绝对应该为画笔定义一个变量(或常量),例如:
def __repr__(self):
return repr(self.c)
这样,您无需每次都自定义范围和其他参数。但是,如果出于任何原因您确实不想这样做,只需将defaultdict(<class 'list'>, {0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
1: [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
2: [20]})
更改为const brush = d3.brush();
:
brush
这是一个基本的演示,请单击按钮以移动画笔:
d3.brush()
d3.select(this).select('.brush').call(d3.brush().move, f(d))
const svg = d3.select("svg");
const g = svg.append("g");
g.call(d3.brush());
d3.select("button").on("click", function() {
g.call(d3.brush().move, [
[100, 0],
[400, 100]
])
})