【问题标题】:Unable to plot chart with new data format无法使用新数据格式绘制图表
【发布时间】:2014-07-10 09:46:34
【问题描述】:

我正在转换my existing chart 以支持新的数据格式。

X 轴的旧数据格式:使用纪元格式的日期,例如 1356912000000(数字)
X 轴的新数据格式:使用常规格式的日期,如 "2012-12-31" (String)

Y轴格式相同(数字)。

按照旧数据格式绘制图表:http://jsfiddle.net/rdesai/vfe2B/85/
新数据格式图表:http://jsfiddle.net/rdesai/vfe2B/84/

对于旧格式,我将纪元日期转换为常规日期并将其提供给刻度。对于新格式,不确定我需要做什么。

我该如何解决这个问题?

【问题讨论】:

    标签: javascript d3.js nvd3.js


    【解决方案1】:

    请阅读D3 page on time formatting

    在您的情况下,您只需将格式为“2012-12-31”的这些字符串转换为日期:

    > var dateFormat = d3.time.format("%Y-%m-%d");
    > dateFormat.parse("2012-12-31");
    Mon Dec 31 2012 00:00:00 GMT+0100 (CET)
    

    编辑:在这里找到一个工作小提琴http://jsfiddle.net/vfe2B/94/

    错误是您在创建图表时需要使用这些日期解析器将字符串转换为日期。 .tickformat 函数仅控制您如何在轴上表示数据,但您需要在创建图表时向图表“提供”日期,如下所示:

    .x(function(d) { return dateFormat.parse(d[0]) })
    

    我更改了我的 jsfiddle 中的刻度格式,以便您更好地了解其中的区别。

    【讨论】:

    • 更正了问题中的链接。我使用了您建议的数据格式,但它似乎不起作用。 jsfiddle.net/vfe2B/86 不知道我错过了什么。
    • 谢谢!如何以与喂食完全相同的方式显示日期?像 2012-12-31 一样?
    • 好像你不明白我的解释 :( 。从我的回答:“函数 .tickformat 只控制你如何表示轴上的数据”
    猜你喜欢
    • 2018-06-20
    • 2020-02-17
    • 2015-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多