我正在尝试使用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的新手,因此建议您采用最佳做法'也将不胜感激。
答案 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()
,用于初始化数据集。