D3:嵌套并排除某些键
D3: Nest and excluding certain keys
我是d3的新手,正试图在一个框中为四个特定州中的每一个绘制一些数据,与本页类似,但州不是大陆,还有更多的数据点。我有一个json数据集,其中包含42000多个条目,据称仅来自这4个状态。
为了按状态键入,我使用了以下内容:
d3.json("data/business.json",function(json) {
var data=d3.nest()
.key(function(d) {return d.state;})
.sortKeys(d3.ascending)
.entries(json);
然后为每个状态制作一个框:
// One cell for each state
var g=svg.selectAll("g").data(data).enter()
.append("g")
(属性等)
很好,但我很快发现数据集包含了一些来自我不想考虑的几个州的数据,所以它绘制的方框比我想要的要多。
我想要一种在不更改原始数据文件的情况下排除不在四个状态中的数据的方法。对此,最好的方法是什么?
过滤json
:
var keep = ["state1", "state2", "state3", "state4"];
json = json.filter(function(d) { return keep.indexOf(d.state) > -1; });
可以过滤d3.nest的输出,而不是原始数组:
function trim(nested, f) {
return nested
.filter(function (e) {
return f(e.key)
})
.map(function (e) {
if (e && (typeof e =='object') && Array.isArray(e.values) && ('key' in e)) {
return { key: e.key, values: trim(e.values, f)}
}
else return e
})
}
例如:
function isNewEngland(st) {
return ["ME","VT","NH","MA", "CT", "RI"].indexOf(st)>=0
}
data = trim(data, isNewEngland)
相关文章:
- 用嵌套函数和默认函数定义函数
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 可以简化嵌套的延迟Q Promises解析吗
- 用于搜索的聚合物嵌套绑定
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- d3中堆栈函数和嵌套函数之间的差异
- 如何打印嵌套对象的所有值
- JavaScript 中的嵌套函数和 “this” 关键字
- 设置嵌套对象属性的更好方法
- querySelector/getElementByClassName嵌套项的顺序
- 猫鼬在特定记录中查找嵌套记录
- 访问嵌套JSON对象的键,其中键是动态的
- D3嵌套组作为x轴
- Ionic和angularjs嵌套步骤应用程序
- 从多维嵌套json数组创建下拉列表
- 默认情况下折叠和展开嵌套列表
- 嵌套对象结构
- 从嵌套对象属性中获取排除某个值的最高值
- D3:嵌套并排除某些键
- Angularjs 量角器:用于排除嵌套元素的有效选择器