首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Append不是d3.js中的函数吗?

Append不是d3.js中的函数吗?
EN

Stack Overflow用户
提问于 2016-11-30 15:24:53
回答 1查看 1.8K关注 0票数 3

我是D3.js的新手,我有一个我不理解的错误。在style部分,我有以下内容

代码语言:javascript
复制
.bar1 {
  fill: blue;
}

.bar2 {
  fill: red;
}

在我的html代码中,我定义了这个ID:

代码语言:javascript
复制
<div id="chart-svg"></div>

在JavaScript代码中,svg的定义如下:

代码语言:javascript
复制
var svg = d3.select("#chart-svg").append("svg")
    .attr("width", width + margin.left + margin.right)
    .attr("height", height + margin.top + margin.bottom)
    .append("g")
    .attr("class", "graph")
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

然后在javascript中,我定义了一些用于过滤代码的逻辑

代码语言:javascript
复制
barsM = svg.selectAll(".bar1").data(data).enter()
     .filter(function (d) {
         return (d.location_id == location_id)
             && (d.year == year)
             && (d.metric == metric)
             && (d.sex_id == 1)
     });

最后

代码语言:javascript
复制
barsM.append("rect")
    .attr("class", "bar1")
    .attr("x", function (d) { return x(d.age_group); })
    .attr("width", x.rangeBand() / 2)
    .attr("y", function (d) { return y0(d.mean * 100); })
    .attr("height", function (d, i, j) { return height - y0(d.mean * 100); });

但是我有一个奇怪的错误,说append is not function。请帮帮忙

EN

回答 1

Stack Overflow用户

发布于 2020-07-16 11:01:31

当您没有选择时,就会发生这种情况。"append“不是d3对象的一部分,而是selection的一部分。我认为您的代码的问题是在输入数据之后进行过滤,但是过滤器应该在enter方法之前进行。

代码语言:javascript
复制
barsM = svg.selectAll(".bar1").data(data).filter(function (d) {
         return (d.location_id == location_id)
             && (d.year == year)
             && (d.metric == metric)
             && (d.sex_id == 1)
     }).enter();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40882547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档