javascript - 尝试使用 d3 更新 rect 时出错

标签 javascript csv d3.js

我有一个按钮,可以使用新 csv 文件中的信息重新绘制堆积条形图,该文件与 csv 文件(除了值之外)相同。

图表本身正在重绘,但矩形没有调整大小,我收到以下错误:

selection.selectAll(...).data is not a function

我已经运行了测试并且数据确实存在。我是 d3 的新手,目前有点困惑。

这是产生错误的代码块:

        var svg = d3.select("body").transition();

        //add x and y axis      
        svg.select(".x.axis") // change the x axis
            .duration(750)
            .call(xAxis);
        svg.select(".y.axis") // change the y axis
            .duration(750)
            .call(yAxis);

   var selection = svg.selectAll(".series")
        .duration(750)          
        .attr("transform", function (d) { return "translate(" + x(d.quarter) + "," + y2(d.quarter) +")"; });

        //error happens after this part
        selection.selectAll("rect")
          .data(function (d) { return d.mapping; })
        .enter().append("rect")
          .attr("width", x.rangeBand())
          .attr("y", function (d) { return y(d.y1); })
          .attr("height", function (d) { return y(d.y0) - y(d.y1); })
          .style("fill", function (d) { return color(d.name); })
          .style("stroke", "grey")
          .on("mouseover", function (d) { showPopover.call(this, d); })
          .on("mouseout",  function (d) { removePopovers(); })

最佳答案

您的 selection 变量实际上是一个转换而不是选择,并且没有 .data() 函数。你需要类似的东西

 var svg = d3.select("body");

    //add x and y axis      
    svg.select(".x.axis") // change the x axis
        .transition()
        .duration(750)
        .call(xAxis);
// etc

var selection = svg.selectAll(".series");

selection.duration(750)          
    .attr("transform", function (d) { return "translate(" + x(d.quarter) + "," + y2(d.quarter) +")"; });

    selection.selectAll("rect")
      .data(function (d) { return d.mapping; })
    .enter().append("rect")
   // ...

关于javascript - 尝试使用 d3 更新 rect 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33961712/

相关文章:

python - 将唯一标签添加到选项卡式行

javascript - 如何在javascript中将asp.net json日期格式转换为DD-MM

javascript - 检测鼠标何时进入文档的特定区域(不是 Div 元素)

javascript - 如何使用 Javascript 从网站获取字符行

javascript - CSS 注入(inject)在 content_scripts 中使用声明失败,但在通过注入(inject)的 JavaScript 加载时有效

c++ - 链接列表正在替换

Python:加载 CSV,第一列作为行名,第一行作为列名

jquery - d3 相当于 jQuery Parent()

javascript - 单击它时更改 SVG 的文本颜色

javascript - 如何在 arc.centroid() 上向 D3 和弦图 Group Arcs 添加标签?