如何从dc.js / crossfilter / d3中的数组字段中选择元素,并将每个元素用作图表的单独数据点
How to select elements from array field in dc.js / crossfilter / d3 and use each of them as separate data point for chart?
例如,JSON元素,其中"categories"字段是一个数组:
{"city": "San Francisco, CA", "business_id": "15", "name": "Parastructure", "date": "2014", "founder_education": "Stanford", "categories": ["Big Data", "Big Data Analytics", "Data Visualization", "Enterprise Software"], "Amount": "500000000"}
使用dc.js,我如何选择数组中的每个元素并将其添加到图表可视化中?
var categories = ndx.dimension(function (d) {
return d.categories; // this wouldn't work
});
var categoriesGroup = categories.group();
Crossfilter对于记录的平面数组效果最好。如果你不喜欢reduce函数创建映射的想法,就像上面的评论所建议的那样,你可以通过将记录的类别"相乘"来从数据中创建一个平面数组。
所以,像这样(使用下划线的克隆函数复制记录):
var product = [];
for(var r in records) {
for(var i = 0; i < r.categories.length; ++i) {
var r2 = _.clone(r);
delete r2.categories;
r2.category = r.categories[i];
product.push(r2);
}
}
(警告:未测试。)以前一条记录中有n个类别,现在有n条记录,每个类别一个。现在可以减少category
了
…当然,它可能会使您的其他计算变得混乱或无法工作(这里有一些提示),这就是为什么我首先建议使用另一个答案。不幸的是,交叉过滤器不是为处理多值字段而设计的。
相关文章:
- 使用JQuery检索元素数据
- WebGL错误-错误:WebGL:bindBuffer:buffer已包含元素数据
- 如何在字符串中包含隐藏的 HTML 元素 - 数据表 - jquery
- 聚合物硒测试访问子元素数据
- 如何将动态元素数据传输到 struts2.
- j查询如何将值从输入字段设置为其他元素数据属性
- jQuery只会被点击元素数据
- 按方法动态更改元素数据
- 将父聚合物元素数据暴露给子元素
- 第一个jQuery插件-如何以正确的方式保存关联元素数据
- 将元素[数据]发布到服务器端的最佳方式
- Javascript隐藏对象元素数据值的子节点
- 获取AngularJS脚本中的HTML元素数据
- jQuery存储要在回调中使用的任意元素数据
- 查找父元素数据值并显示它
- 从元素数据中获取对象属性
- 插入HTML表格行"标题"基于动态可见元素数据属性的研究
- 查找具有与另一个元素数据属性匹配的id的元素的最佳方法
- 如何获得元素数据调试脚本
- Aurelia定制元素数据绑定