【问题标题】:Uncaught TypeError: .filter is not a function未捕获的类型错误:.filter 不是函数
【发布时间】:2017-01-24 08:15:33
【问题描述】:

我已阅读https://github.com/d3/d3-selection/blob/master/README.md#selection_filter。但是我不知道为什么函数不起作用。

var bubble = d3.pack()
    .size([diameter, diameter])
    .padding(2);

var root = d3.hierarchy({"children": data.values});

var node = svg.selectAll(".node")
    .data(bubble(root)
        .filter(function(d) {return !d.children;}))
    .enter().append("g")
    .attr("class", "node")
    .attr("transform", function(d) {
        return "translate(" + d.x + "," + d.y + ")";
    });

【问题讨论】:

  • 请粘贴您的bubble 函数。
  • 粘贴@GerardoFurtado

标签: javascript d3.js data-visualization


【解决方案1】:

在将数据传递给pack() 函数之前,您必须将其传递给d3.hierarchy(),其中:

根据指定的分层数据构造一个根节点。

所以,给定你的数据对象:

var data = {
    //Hierarchical data here
};

你必须把它传递给d3.hierarchy():

var root = d3.hierarchy(data);

然后,你可以使用bubble

.data(bubble(root)) 

编辑:由于您更改了问题的 title,问题现在很清楚了:bubble(root) 返回一个 object,您不能在目的。这是一个数组方法。

【讨论】:

  • 请看变化
  • @ДастанКойшыбаев 现在问题很清楚了:bubble(root) 返回一个对象。您不能在对象中使用filter,过滤器是一个 array 方法:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
  • 我使用了Array.prototype.slice.call(bubble(root)),但问题消失了,但出现了一个新的(。无法读取 null 的属性 'ownerDocument'。你知道吗?对不起,对不起跨度>
  • 属性用于本身就是文档的节点,结果为空 - 找到它。但是使用 v3 代码可以正常工作@GerardoFurtado
  • 此时如果没有MCVE,就无法为您提供帮助。另外,我建议你发布一个新问题,因为这个问题已经改变了很多次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
  • 2019-06-06
  • 2019-05-24
  • 2021-12-15
  • 2019-10-26
相关资源
最近更新 更多