当前位置: 首页 > 知识库问答 >
问题:

D3JS-TypeError:字符串未定义

蓝逸仙
2023-03-14

我不明白这个错误:

TypeError:string是未定义的函数d3_time_parse(date,template,string,j){var c,p,i=0,n=template.length,m=string.length;...

这里是我的代码:



    var margin = {top: 20, right: 80, bottom: 30, left: 50},
        width = 960 - margin.left - margin.right,
        height = 500 - margin.top - margin.bottom;

    var parseDate = d3.time.format("%Y%m%d").parse;

    var x = d3.time.scale()
        .range([0, width]);

    var y = d3.scale.linear()
        .range([height, 0]);

    var color = d3.scale.category10();

    var xAxis = d3.svg.axis()
        .scale(x)
        .orient("bottom");

    var yAxis = d3.svg.axis()
        .scale(y)
        .orient("left");

    var line = d3.svg.line()
        .interpolate("basis")
        .x(function(d) { return x(d.date); })
        .y(function(d) { return y(d.index); });

    var svg = d3.select("body").append("svg")
        .attr("width", width + margin.left + margin.right)
        .attr("height", height + margin.top + margin.bottom)
      .append("g")
        .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

    d3.csv("data.csv", function(error, data) {
      color.domain(d3.keys(data[0]).filter(function(key) { return key !== "date"; }));

      data.forEach(function(d) {
        d.date = parseDate(d.date);
      });

      var indexes = color.domain().map(function(name) {
        return {
          name: name,
          values: data.map(function(d) {
            return {date: d.date, index: +d[name]};
          })
        };
      });

      x.domain(d3.extent(data, function(d) { return d.date; }));

      y.domain([
        d3.min(indexes, function(c) { return d3.min(c.values, function(v) { return v.index; }); }),
        d3.max(indexes, function(c) { return d3.max(c.values, function(v) { return v.index; }); })
      ]);

      svg.append("g")
          .attr("class", "x axis")
          .attr("transform", "translate(0," + height + ")")
          .call(xAxis);

      svg.append("g")
          .attr("class", "y axis")
          .call(yAxis)
        .append("text")
          .attr("transform", "rotate(-90)")
          .attr("y", 6)
          .attr("dy", ".71em")
          .style("text-anchor", "end")
          .text("Variation (%)");

      var index = svg.selectAll(".index")
          .data(indexes)
        .enter().append("g")
          .attr("class", "index");

      index.append("path")
          .attr("class", "line")
          .attr("d", function(d) { return line(d.values); })
          .style("stroke", function(d) { return color(d.name); });

      index.append("text")
          .datum(function(d) { return {name: d.name, value: d.values[d.values.length - 1]}; })
          .attr("transform", function(d) { return "translate(" + x(d.value.date) + "," + y(d.value.index) + ")"; })
          .attr("x", 3)
          .attr("dy", ".35em")
          .text(function(d) { return d.name; });
    });

Date,DAX,CAC40,FTSE,NASDAQ,Other
20060407,-0.000712859,-0.009013212,0.010819606,0.009846526,0.003082604
20060413,-0.007765968,-0.024263398,0.011238971,0.004128621,0.005952774
20060421,0.02261859,0.00330204,0.028734861,0.001688981,0.003459211
20060428,0.007170521,-0.007531405,0.010534438,-0.002416181,0.004012361
...

共有1个答案

徐麒
2023-03-14

日期,DAX,CAC40,富时,纳斯达克,其他

JavaScript变量名是区分大小写的,因此当解析具有上面所述头的CSV文件时,您需要引用具有以下内容的字段:

d.Date // note the uppercase D
d.DAX // note all uppercase

下面是d3 wiki https://github.com/mbostock/d3/wiki/csv#wiki-parse的示例

1997年,福特,E350,2.34

2000年,Mercury,Cougar,2.38

当使用D3的CSV解析器解析时,结果数据将由以下数组表示:

[
  {"Year": "1997", "Make": "Ford", "Model": "E350", "Length": "2.34"},
  {"Year": "2000", "Make": "Mercury", "Model": "Cougar", "Length": "2.38"}
]
data.forEach(function (d) {
    d.Date = parseDate(d.Date);
});
return {date: d.Date, index: +d[name]};
 类似资料:
  • 问题内容: 我只是想知道为什么Google Go中的字符串函数是在包中定义的,而不是在数据类型本身上定义的。他们本可以轻松完成 而不是当前 在包装中。 我的猜测是,如果您想在扩展的自定义类型上实现的自定义版本(即),则无法再访问该类型的内置函数,但是我找不到对此的任何支持。 问题答案: 简短的答案是:“保持语言简单”。 作为一种语言运行,仅允许在同一程序包中的类型上定义方法,但是由于(像其他内置类

  • 主要内容:直接定义字符串,使用 String 类定义字符串是 Java 中特殊的类,使用方法像一般的基本数据类型,被广泛应用在 Java 编程中。Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个 String 类来创建和操作字符串。 在 Java 中定义一个字符串最简单的方法是用双引号把它包围起来。这种用双引号括起来的一串字符实际上都是 String 对象,如字符串“Hello”在编译后即成为 String 对象。因此也可以通

  • 问题内容: 我想将Json的压缩gzip上传到Google Storage。 我有以下代码: 该是返回的Json换行符分隔的功能。 运行此代码将给出: 在Python文档说,格式是:我不知道我把它理解为不存在如何使用它的例子。 我也尝试过 这给出了: 我正在运行Python 3.5 问题答案: 您没有正确使用该功能。检查一下: 你可以试试: 是该函数的参数,而您正在该函数之外使用它。

  • 问题内容: 2个问题: str字段在两个A类型的实例之间共享[第2行] 根据以下代码有什么含义? 问题答案: 该字段本身 不在 两个实例之间共享。它们是不同的领域。但是,它们以相同的值开始,因为要插入字符串文字。 这意味着当该块在一个线程中获取字符串的监视器时,它将阻止另一线程获取同一监视器。重要的是要了解该块正在获取与该字段的 值 相关联的监视器的锁-涉及两个独立的字段无关紧要。 道德:不要同步

  • 在将依赖项升级到最新版本时,我的mern stack应用程序崩溃,我收到一条typeError消息 TypeError:路径必须是字符串。接收未定义 有人能帮忙吗?提前感谢。以下是错误: package.json文件: 我应该降级到以前版本的纱线吗?我担心如果我这样做,我会得到更多的错误。任何想法...?

  • 问题内容: 我尝试使用以下方法安装node.js模块: 但我得到这个错误: 可能正在发生这种情况,因为我使用代理服务器,但我通过这种方式设置了代理服务器,以允许从网络外部的ips下载 我希望你能帮帮我 问题答案: 从命令行设置代理。 如果仍然发生错误,请再试一次。 这些为我工作。(请参阅http://sushichop.blogspot.jp/2013/01/npm- install.html )