我有一个json文件,可以循环访问特定的键/值对。输出被推向形式的数组:在数组d3中创建条形图时遇到问题
var output = ["key1", "value1", "key2", "value2", ... "key(n)", "value(n)"]
我想做的是产生d3.js柱形图,其中键对应于杆标签,并且唤起注意对应于值。
我正在为这个看似简单的任务而努力。任何意见,将不胜感激。
在此先感谢。
我有一个json文件,可以循环访问特定的键/值对。输出被推向形式的数组:在数组d3中创建条形图时遇到问题
var output = ["key1", "value1", "key2", "value2", ... "key(n)", "value(n)"]
我想做的是产生d3.js柱形图,其中键对应于杆标签,并且唤起注意对应于值。
我正在为这个看似简单的任务而努力。任何意见,将不胜感激。
在此先感谢。
可能会更容易构造输出数组如下:
var output = [{"key": "key1", "value": "value1"}, {"key": "key2", "value": "value2"}, ...]
然后,在D3代码,你可以创建一个使用这个这个阵列中的数据,并简单地返回取决于你是否需要相应的信息确定酒吧标签或其高度。那有意义吗?
当写吧标签,例如,它会是这个样子:
var labels = d3.selectAll("labels")
.data(output)
.enter()
.append("g")
.text(function(d,i) {
return d.key;
})
没有确切知道什么是JSON文件的样子,我不能告诉你如何构造输出数组中这种形式,但鉴于你有一个数组,看起来像
var original_output = ["key1", "value1", "key2", "value2", ... "key(n)", "value(n)"]
你可以构建新的输出数组是这样的:
var new_output = [];
for (var i = 0; i < original_output.length; i=i+2) {
new_output.push({"key": original_output[i], "value": original_output[i + 1]})
}
此解决方案假定每对的密钥和值彼此正确并按正确的顺序排列。
这将工作......但我该如何重组数组? – Kickasstimus
我会在回复中编辑我的答案 – Evan
在d3之上使用nv比较容易:nvd3.org,一个相关的例子是在nvd3.org/examples/linePlusBar.html – rleir