【问题标题】:d3.js use a function as csv source instead of a csv pathd3.js 使用函数作为 csv 源而不是 csv 路径
【发布时间】:2016-06-24 03:23:03
【问题描述】:

我是 d3.js 的新手,在加载数据时,我目前看到的示例看起来像

d3.csv("path/to/file.csv")...

我有一个返回动态服务器端生成 csv 的函数,我使用同步 POST ajax 来生成它们,但为了简单起见,我有一个这样的 js 函数

function makeCSV(){
    return "id,value\n"+
           "0,value 1\n"+
           "1,value 2\n"+
}

有没有办法做这样的事情?并且是否完全推荐这种方法(同步ajax肯定会导致滞后)

d3.csv(makeCSV())...

有关 CSV 数据加载的其他相关问题是,是否需要提供 .csv 文件,或者是否可以简单地放置生成和下载动态生成的 csv 文件的 URL,这可以替代 AJAX 调用但是手动编码每个参数看起来乏味且非动态

d3.csv("?action=makeCSV&param1=val1&param2=val2")...

【问题讨论】:

  • 是的,你可以做 d3.csv(makeCSV(),function(error, data) { data.forEach(function(d) { d.; });)
  • @NagaSaiA 当然可以,但这会导致错误,因为makeCSV() 不返回 URL。
  • 我刚刚为您的问题的第一部分添加了答案,但我不太了解关于动态加载 CSV 的第二部分。您能否更具体一点并添加更多细节。不过,这可能本身就是一个问题。

标签: javascript csv d3.js


【解决方案1】:

根据规范d3.csv() 要求第一个参数是加载 CSV 的 url。如果您只想解析包含 CSV 内容的字符串,无论它是如何创建的,您都需要改用 d3.csv.parse()。对于您的代码,这将是这样的

var rows = d3.csv.parse(makeCSV());

function makeCSV(){
    return "id,value\n"+
           "0,value 1\n"+
           "1,value 2\n";
}

var rows = d3.csv.parse(makeCSV())

console.log(rows);
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

【讨论】:

    猜你喜欢
    • 2016-09-13
    • 2017-05-19
    • 2020-09-06
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多