【问题标题】:D3.js version 6: Loading a TSV and changing Variable typesD3.js 版本 6:加载 TSV 并更改变量类型
【发布时间】:2021-05-21 01:06:51
【问题描述】:

我对 D3.js(第 6 版)比较陌生。我正在尝试加载本地 .txt 文件“data.tsv(请参阅最后的 github repo)。

这是我尝试过的:

var psv=d3.dsvFormat("|");

d3.text("data.txt", function(d){
 var rows= psv.parse(data); 
    
}).then(function(data){
    console.log(rows);
});

控制台日志显示:dataHandlers.js:39 Uncaught (in promise) ReferenceError: rows is not defined

注意:我已经在我的 github 页面上上传了 .txt! https://raw.githubusercontent.com/AhmadMobin/D3-Learning/main/data.txt

非常感谢您在 D3.js 之旅中帮助新手

注意:我确实问过一个非常相似的问题,关于如何加载 .csv 文件,其中一位善良的灵魂确实为我提供了解决方案:) D3.js version 6: Loading a CSV and changing Variable types

【问题讨论】:

    标签: javascript csv d3.js


    【解决方案1】:

    你在这里错过了回报:

    function(d){
        var rows= psv.parse(data);    
    }
    

    但这不是问题:不仅d3.text 不接受行转换函数,即使它接受了rows 变量也永远不会自动传递给promise(只有文本本身)。

    也就是说,你只需要d3.dsv

    d3.dsv("|", "https://raw.githubusercontent.com/AhmadMobin/D3-Learning/main/data.txt").then(function(data) {
      console.log(data);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>

    【讨论】:

    • 这成功了!非常感谢@gerardo Furtado!我想知道您是否可以更新代码以格式化月份和价格变量。这就是我想要做的: var parseDate = d3.timeParse("%m/%d/%Y");月份:parseDate(data.month),价格:Number(data.price.trim().slice(1))
    • @AhmadMobin 就像你链接的 other answer 一样。
    【解决方案2】:

    这是我的完整脚本,以显示我如何更改变量类型:

    
    d3.dsv("|", "data.txt", function(d){
    return{
        month: parseDate(d.month),
        price: Number(d.price.trim().slice(1))
    }
    
    }).then(function (data) {
       console.log(data);
       
       });
    
    Huge shoutout to @Gerardo Furtado !
    
    
     
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多