【问题标题】:Changing D3.js input format from .csv to an array of dates将 D3.js 输入格式从 .csv 更改为日期数组
【发布时间】:2017-09-04 12:38:46
【问题描述】:

我正在尝试在我的网站上实现 d3.js 直方图,该直方图从 solr 响应中获取数据。在我的研究中,我发现Mike Bostock 提供了出色的 D3 解决方案。其中之一是“Histogram II”,它非常适合我的需求。问题是它(以及我发现的所有其他类似解决方案)都带有一个 .csv 作为数据源。我想使用数组作为数据源,但在尝试更改输入时失败了。

您能否给我一个提示,哪些行必须更改才能使用以下数组,该数组目前基于 Mike 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"}
  ]

提前致谢。

【问题讨论】:

  • 编辑:Gerados 问题消失了。他问我是否在解析日期。 @GerardoFurtado 我避免完全复制 Mike Bostocks 代码。如果我正确地解释它,日期会在他的解决方案中被“d3.timeParse("%m/%d/ ...)" 解析。我正在为他的行 'd3.csv("homicides.csv", type,函数(错误,数据)',我不能说“改用数组”。
  • 我删除了我的评论,因为我认为您正在解析日期很明显。现在我看到您没有解析日期:parseDate 变量只是定义了说明符。在 Bostock 的代码中,日期在访问器(行)函数中进行解析。但是,如果您使用变量来存储数据,则没有访问器函数。话虽如此,你必须使用forEach 或类似的东西。

标签: javascript arrays csv d3.js


【解决方案1】:

在 Bostock 的原始代码中,date 函数正在解析 date 字符串,该函数由 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)
})

这是演示,我刚刚修改了 Bostock 的代码以使用数组而不是 CSV 文件:https://bl.ocks.org/anonymous/bb0d820fbca8fbdf0f8827b0edbcbd44。查看data数组后面的forEach

【讨论】:

  • 你太棒了,谢谢! :) 对于一个测试,我复制粘贴了它,它工作正常。当然我会重构你的解决方案以获得更深入的理解。
猜你喜欢
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 2019-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多