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 就像我向您展示的那样完成。
我想创建股票图表。我一直在尝试使用 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 就像我向您展示的那样完成。