2016-05-12 70 views
0

我有一个json文件,可以循环访问特定的键/值对。输出被推向形式的数组:在数组d3中创建条形图时遇到问题

var output = ["key1", "value1", "key2", "value2", ... "key(n)", "value(n)"] 

我想做的是产生d3.js柱形图,其中键对应于杆标签,并且唤起注意对应于值。

我正在为这个看似简单的任务而努力。任何意见,将不胜感激。

在此先感谢。

+0

在d3之上使用nv比较容易:nvd3.org,一个相关的例子是在nvd3.org/examples/linePlusBar.html – rleir

回答

0

可能会更容易构造输出数组如下:

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]}) 
} 

此解决方案假定每对的密钥和值彼此正确并按正确的顺序排列。

+0

这将工作......但我该如何重组数组? – Kickasstimus

+0

我会在回复中编辑我的答案 – Evan