【问题标题】:Javascript D3.js d3.json() function not accepting valid json, what to do to use it the same as d3.csv?Javascript D3.js d3.json() 函数不接受有效的 json,如何使用它与 d3.csv 相同?
【发布时间】:2013-06-20 19:42:25
【问题描述】:

学习 d3.js 我正在使用来自这样的 .csv 文件的原始数据构建直方图,

CSV

x,y
2,16
3,18
5,18
12,19

第三天

d3.csv("data.csv", function (data) {

var map = data.map(function (i) {
    return parseFloat(i.y);
})

var histogram = d3.layout.histogram()
    .bins(4)
    (map)

...等等。这是我最初的电话,它有效。

像这样将相同的数据放入有效的 json 格式中,

[{"y":["16","18","18","19"],"x":["2","3","5","12"]}]

这样调用数据是不行的,

d3.json("data.json", function (json) {

var map = data.map(function (i) {
    return parseFloat(i.y);
})

var histogram = d3.layout.histogram()
    .bins(4)
    (map)

如何让 d3.js 以与原始 .csv 格式相同的方式解释 .json 文件,以便我必须更改的代码最少。这可能吗?我阅读的文档真的让我感到困惑,并且似乎不适用于我的示例。 Youtube 上最好的教程使用 .csv 而不是 json。我需要使用 json。

【问题讨论】:

  • 你得到了什么结果?

标签: javascript json csv d3.js histogram


【解决方案1】:

为你的 json 文件试试这个数据:

[{"x":"2","y":"16"}, {"x":"3","y":"18"}, {"x":"5"," y":"18"}, {"x":"12","y":"19"}]

如果您以数字而不是字符串指定数据,您也可以去掉parseFloat(i.y)(只返回i.y)。 CSV 值被强制转换为字符串,而 JSON 可以包含数字。

编辑: 将第一行更改为:d3.json("data.json", function (<strong>error</strong>, <strong>data</strong>) {。注意参数名称。您的代码应该在此之后工作。

【讨论】:

  • 那种帮助。但是在访问 map 方法时给了我“未定义”或“null”。
  • 尝试将函数(json)更改为函数(数据)
  • 我认为这不是问题所在。根据github.com/mbostock/d3/blob/…的最后一个函数定义,d3 支持需要 data 参数的回调函数
  • @rebHelium,无法让它在 jsfiddle 上工作,但我已经确认 d3.json 通过建立 data.csv 和 data.json 文件并使用我的本地网络服务器进行确认。您是否尝试通过仅将数据参数写入控制台来将代码减少到最低限度?您是否查看过您的 JavaScript 控制台以查看是否有任何错误(例如,与从 URI 中检索相关的错误)?
  • 好吧,Thach Mai 对格式的看法是正确的。我也遇到了代码中的“地图”和其他内容的问题。这个视频帮助我确定了它。谢谢您的帮助! youtube.com/watch?v=2S1AbEWX85o
猜你喜欢
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2017-03-09
  • 2016-06-11
  • 1970-01-01
  • 2015-06-09
相关资源
最近更新 更多