D3 解析和显示 JSON(来自 Python Dataframe)

D3 Parse and Display JSON (from Python Dataframe)

我想创建股票图表。我一直在尝试使用 http://bl.ocks.org/mbostock/3884955 中的示例,但我无法解析我的 python 数据帧输出的 json 文件的格式:

这里是 json 的例子:

var dataset = [{"1412121600000":{"Long":100.0,"Short":100.0,"Combined":100.0},
                "1412208000000":{"Long":100.7259540416,"Short":99.9845645596,"Combined":100.7105186013},
                "1412294400000":{"Long":100.4436402904,"Short":98.8837985253,"Combined":99.3194897889},
                "1412553600000":{"Long":100.4436402904,"Short":98.9995341224,"Combined":99.4357353278},
                "1412640000000":{"Long":99.5664445414,"Short":100.5277244418,"Combined":100.1022654968},
                "1412726400000":{"Long":101.6333965937,"Short":98.7695530192,"Combined":100.4296105442},
                "1412812800000":{"Long":101.8552090464,"Short":100.7284660335,"Combined":102.6406329748},
                "1412899200000":{"Long":101.5628181559,"Short":101.8782213959,"Combined":103.5175690128},
                "1413158400000":{"Long":100.6352059402,"Short":103.5518262499,"Combined":104.27263855},
                "1413244800000":{"Long":99.5664445414,"Short":103.3915337819,"Combined":103.0038388108},
                "1413331200000":{"Long":98.3464414352,"Short":104.0910952724,"Combined":102.4386550712}}];

我需要将字典的键格式化为日期并使用数据访问节点,但不确定如何操作。我一直在尝试示例的变体,但它似乎不起作用:

d3.json(dataset, function(error, data) {
    data.forEach(function(d) {
        ??
    });

我的建议是先稍微重新格式化一下。你应该让每个点看起来像这样:

{"date":"1412121600000","values":["Long":100.0,"Short":100.0,"Combined" :100.0]}

然后您可以使用.date 或.value 来引用它们。例如,如果 "date" 应该是 x 轴上的一个值,你可以去

.attr('x',function(d){return d.date;})

具有一些 Date.parse() 功能。

例如,请注意 Mike 是如何做到的

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

var parseDate = d3.time.format("%Y%m%d").parse;

在这里,他有 "date" 作为一列,可以这样引用它。使用 JSON 就像我向您展示的那样完成。