2017-04-09 49 views
2

我正在试图在我的网站上实现一个d3.js直方图,它从solr响应中获取数据。在我的研究中,我发现Mike Bostock谁提供卓越的D3解决方案。其中之一就是“Histogram II”,它完全符合我的需求。问题是它(和我发现的所有其他可比解决方案)都带有.csv作为数据源。我想使用数组作为数据源,但因为我尝试更改输入而失败。将.csv中的D3.js输入格式更改为日期数组

能否请您给我一个提示该行必须改为使用下面的阵列,这是目前基于迈克Bostocks .csv:将

my_data = [ 
    {"id": "10097071", "case": "HY285524", "date": "06/02/2015 09:41:19 PM"}, 
    {"id": "21907", "case": "HY291065", "date": "06/07/2015 03:50:00 AM"} 
    ] 

在此先感谢。

+0

编辑:Gerados问题消失了。他问我是否解析日期。 @GerardoFurtado我避免完全复制Mike Bostocks代码。如果我正确解释它,那么日期会在他的解决方案中被“d3.timeParse(”%m /%d/...)“解析。”我正在用他的'd3.csv(“homicides.csv”,类型,函数(错误,数据)“我不能说”使用数组“ – Alexander

+0

我删除了我的评论,因为我认为这显然是你解析日期。现在我看到你没有解析日期:'parseDate'变量只是定义了说明符,在Bostock的代码中,日期在accessor(row)函数中被解析,然而,如果你使用一个变量来存储数据,那么就没有访问函数。 ,你必须使用'forEach'或类似的东西 –

回答

2

在博斯托克的原代码,在date字符串由type功能解析,通过d3.csv称为一排功能:

function type(d) { 
    d.date = parseDate(d.date); 
    return d; 
} 

既然你打算使用一个变量来保存你的数据阵列,摆脱d3.csv完全,你必须解析date字符串的其他方式。例如,你可以使用一个forEach

data.forEach(function(d){ 
    d.date = parseDate(d.date) 
}) 

这里是演示,我只是修改博斯托克的代码使用数组,而不是一个CSV文件:https://bl.ocks.org/anonymous/bb0d820fbca8fbdf0f8827b0edbcbd44。查看data阵列后的forEach

+0

你真棒,谢谢你!:)对于一个测试我复制粘贴它,它工作正常。当然,我会重建你的解决方案,以获得更深入的了解。 – Alexander