【问题标题】:Time parsing and scaling for d3js graphsd3js 图形的时间解析和缩放
【发布时间】:2013-10-16 09:29:14
【问题描述】:

我有 this code 绘制一个 d3js 多图表对象,值 time:Years 值以这种格式给出 Year=2011... 使用这种时间格式,代码可以正常工作,但是一旦我想以这种格式更改数据时间 Year=(Y-M-D H:M:S)

var data = [{"Year":"2011-10-01 20:46:04","Happy":"63.4","Sad":"42.7","Angry":"12.2","Surprised":"44.2"},
{"Year":"2012-10-01 17:02:04","Happy":"75.4","Sad":"32.7","Angry":"78.2","Surprised":"82.2"},
{"Year":"2013-10-01 19:55:44","Happy":"73.4","Sad":"20.7","Angry":"92.2","Surprised":"75.4"}];

我解析了数据年份:

 var parseDate=d3.time.format("%Y-%m-%d %H:%M:%S").parse; //line 13
 d.Year=parseDate(d.Year);  //and then line 53

但它不起作用,我如何读取这种格式的数据年份:(Y-M-D H:M:S)

【问题讨论】:

  • “不工作”是什么意思?您收到错误消息吗?
  • 没有错误,但是一旦我更改并解析新的数据数组,图表就不会显示
  • 能否请您提供您所做更改的代码,以便我们重现问题?
  • 是的,上面的链接已经提供了,更改是注释行(问题中提到的行)jsfiddle.net/amani1988/cfk8Y/2
  • 我的错误我放了未更新的链接:我现在编辑问题中的链接

标签: javascript d3.js


【解决方案1】:

您的示例中的问题是您将对象的所有属性都转换为数字。如果日期只是年份,则此方法有效,但如果它是需要解析的字符串,则无效。在您的情况下,您无论如何都不需要进行此转换,因为您可以将数字作为数字而不是直接提供字符串。也就是说,你不需要

for(var prop in d) {
    if(d.hasOwnProperty(prop)) {
        d[prop] = parseFloat(d[prop]);
    }
}

使用 jsfiddle 移除转换代码 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2012-10-27
    • 2015-08-05
    • 2015-10-21
    相关资源
    最近更新 更多