使用d3.json而不从文件中读取

时间:2017-02-27 22:37:02

标签: javascript json d3.js

我正在尝试使用d3.js库创建交互式图形。我希望在从存储的json文件或直接从字典(在某些用户输入时创建)的数据中将数据提供到我的d3对象之间交替。

要从我使用的文件中读取

d3.json('/path/to/file.json')

在用户输入后,创建了字典d。我尝试使用

user_file = json.dumps(d)
d3.json(user_file)

无济于事。

我有一个解决方法 - 根据用户输入,使用user_file.json创建一个json.dump(d, '/path/to/user_file.json')文件,然后直接从d3.json('/path/to/user_file.json')读取。除了感觉不那么优雅之外,这又增加了新json文件被缓存的额外问题。

有什么建议吗?我是javascript的新手,因此建议您采用最佳做法'也将不胜感激。

2 个答案:

答案 0 :(得分:1)

d3.json()通常有两个参数:url('/ path / to / file.json')和将处理结果的函数。这个处理程序通常是在d3.json()的调用中声明的匿名函数,但它可以是一个命名函数。我将定义一个命名函数来处理json结果,然后使用相同的函数来处理在用户输入上创建的数据。

function resultHandler(error, data){
    ... do stuff w/ data ...
}

d3.json('/path/to/file.json', resultHandler);

function userInputHandler() {
   ... create data ...
   resultHandler(null, d);
}

答案 1 :(得分:0)

This article部分描述了如何做到这一点。

他们使用的例子是:

d3.select("body").selectAll("p")
  .data(dataset)
  .enter()
  .append("p")
  .text("New paragraph!");

您感兴趣的部分是.data(),用于初始化数据集。