对我的 Javascript 经验不足表示歉意。我是一名 JavaScript 和 D3 新手,正在尝试改编Mike Dewar 的 D3 入门一书中的地铁等待评估示例。
如给定的那样,示例加载时没有绘制任何地铁线——您必须单击其中一条来绘制它。我认为更改代码很简单,以便在可视化启动时,默认情况下已经绘制了其中一条线(例如“A”线)。
我可以通过从 Dewar 脚本中的 get_timeseries_data 函数内部复制和粘贴部分代码来做到这一点(它会进行一些检查并调用 draw_timeseries 函数)。但这似乎是错误的。编写函数的重点是我应该能够直接调用 get_timeseries_data 本身,不是吗?
由于 Dewar 的最终代码块使用 selection.on('click'),因此模仿它似乎是合乎逻辑的,但使用 .on('load') 代替:
d3.select('#Line_A_key')
.on('load', get_timeseries_data);
将此添加到脚本的末尾不起作用。它甚至没有在控制台中给出错误,所以我猜“加载”事件永远不会发生——为什么?
所以我想也许我可以直接调用 get_timeseries_data 函数而无需等待“加载”事件:
d3.select('#Line_A_key')
.get_timeseries_data();
但这抱怨该对象没有方法“get_timeseries_data”。好的,这是真的,但引出了一个问题——我什么时候可以在 D3 中调用函数?
D3(还是全部是 JS?)似乎在某些情况下需要一个将数据和索引作为其参数的函数。我如何了解这些情况是什么?如果我已经有这种形式的函数,我是否也可以在这些情况之外调用它,或者我是否需要为其他情况编写一个全新的函数?
我无法通过浏览 D3 API 或几个在线教程中的任何一个来为自己回答这些问题,最不幸的是,也不是来自 Dewar 的书。我应该去哪里看?