【问题标题】:Binding data in d3.js在 d3.js 中绑定数据
【发布时间】:2017-04-18 18:17:42
【问题描述】:

在此代码中:http://bl.ocks.org/mbostock/3886208

中第三个(数据)的作用是什么

.data(stack.keys(data.columns.slice(1))(data))

【问题讨论】:

    标签: javascript d3.js data-binding data-visualization


    【解决方案1】:

    如果我们打破它并创建一些新变量来显示正在发生的事情,则可以更好地理解这一行。

    首先,我们使用键访问器定义堆栈生成器:

    var stack = d3.stack()
        .keys(data.columns.slice(1));
    

    然后,我们堆叠数据(这里的data对应你问题中的data,也就是被堆叠的数据):

    var stackedData = stack(data)
    //data being stacked-----^
    

    我们终于绑定了数据:

    g.selectAll(".serie")
        .data(stackedData);
    

    因此,您所说的第三数据只是将要堆叠的数据。问题是,在 Bostock 的代码中,不是像我那样在堆栈生成器变量中定义键访问器,而是将堆叠的数据定义为一个新变量......

    var stack = d3.stack()
        .keys(data.columns.slice(1));
    var stackedData = stack(data);
    

    ...他在 data() 函数中一步完成所有操作,效果相同:

    .data(stack.keys(data.columns.slice(1))(data))
    //           ^---keys accessor           ^----data being stacked
    

    【讨论】:

    • 谢谢。在这一点上,我可能是一名中级编码员,其中一些 d3 东西对我来说就像黑魔法。这是我第一次看到没有逗号的函数和变量并排,这是常见的情况吗?
    • 抱歉,您在哪里看到一个函数和一个变量并排?
    • .data(stack.keys(data.columns.slice(1)) 无逗号 (data))
    • 不能有逗号:data是函数的参数。
    • 哪个data? (bostock 真的需要停止使用 bl.ocks.org 示例的速记...)
    猜你喜欢
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多