将d3序列sunburst示例应用于新数据得到js错误
adapting d3 sequences sunburst example to new data & getting js error
我试图从d3画廊重新利用序列sunburst示例,并且没有viz + js错误,我不知道如何修复。
"我的"代码可以在这里找到。与原版相比,我唯一的改变(基本上)是使用我自己的(现在是假的)数据来描述吸烟者的情况。请进来看医生。他们可以讨论戒烟和肺癌筛查,每一个都有自己独特的管道。
该错误来自sequences.js中的buildHierarchy()
函数。这个家伙使用了原始样本数据(在该repo中提供为'sample-data.csv'——更改sequences.js的第46行以切换到该数据)。但当我把它指向我的小假数据集时,它会显示:
Uncaught TypeError: Cannot read property 'push' of undefined sequences.js:303
我已经遍历了那个函数&可以看到,它发生在该函数为csv中第一行的最后一个组件添加叶节点之后。在执行过程中,children
没有设置,因此对push()
的调用失败。
我不明白为什么原始数据也不会导致这个问题,或者如何修复buildHierarchy()
,使其工作。
感谢您的帮助。
这应该修复它,在一些数据集上遇到了类似的问题。在创建新的子节点时,刚刚添加了children:[]。此外,它看起来会有点错误,除非你添加一个"-End"到一个元素数据位(DiscussScreening和DiscussedCessation),就像例子中Product>End
一样function buildHierarchy(csv) {
var root = {
"name": "root",
"children": []
};
for (var i = 0; i < csv.length; i++) {
var sequence = csv[i][0];
var size = +csv[i][1];
if (isNaN(size)) { // e.g. if this is a header row
continue;
}
var parts = sequence.split("-");
var currentNode = root;
for (var j = 0; j < parts.length; j++) {
var children = currentNode["children"];
var nodeName = parts[j];
var childNode;
if (j + 1 < parts.length) {
// Not yet at the end of the sequence; move down the tree.
var foundChild = false;
for (var k = 0; k < children.length; k++) {
if (children[k]["name"] == nodeName) {
childNode = children[k];
foundChild = true;
break;
}
}
// If we don't already have a child node for this branch, create it.
if (!foundChild) {
childNode = {
"name": nodeName,
"children": []
};
children.push(childNode);
}
currentNode = childNode;
} else {
// Reached the end of the sequence; create a leaf node.
childNode = {
"name": nodeName,
"size": size,
"children" : []
};
children.push(childNode);
}
}
}
return root;
};
相关文章:
- 本地跨原点数据错误
- 加载json时出现Ember.js和Ember数据错误
- 在Emberjs中设置从路由到控制器的数据错误
- Ajax在maxlength之后请求keyup-maxlength后出现数据错误
- JavaScript ScreenLeap API 中的强制数据错误
- 使用 d3 导入.csv数据错误:404:未找到错误
- Google Analytics(分析)的统计数据错误地下降了97%
- 过滤器 AngularJS REST JSON 数据:错误:badcfg 响应与配置的参数不匹配
- JavaScript:意外的数据错误
- Angular JS和Firebase重复数据错误
- 在 PHP 中使用 JavaScript 数据错误
- 使用 ajax 使用 Playframework2 DynamicForm 对象获取 javaScript 数据.错误:
- ESO夹具适配器 - 如何在Ember Data 1.0 beta 2中修复适配器而没有数据错误
- 变量数据错误
- ajax发布数据错误[object HTMLCollection]
- NodeJS中POST请求的数据错误
- PHP更新单元格数据错误
- React+Flux数据错误会产生小吃条通知
- JQuery引用变量带有选择器,数据错误
- 在Spring MVC中字符串显示YUI数据表时发生数据错误