D3条形图未显示数组中的第一个元素

时间:2017-02-06 01:10:25

标签: javascript html css d3.js

我正在处理第一组D3教程(找到here)并遇到了数据阵列的第一项没有出现的问题。我在每个数据div元素上放置的边框表示基本上第一个条目已经"折叠"排成一线。有没有解释为什么会发生这种情况?我怎样才能解决这个问题?

我的HTML,CSS和JS已放到codepen进行查看和编辑。

提前致谢!

孤立的JS:

var data = [10, 23, 14, 5, 6, 6, 6, 22, 17 ]; 

d3.select(".project") 
  .selectAll(".project__bar-chart")
    .data(data) 
  .enter()
  .append("div") 
    .attr("class", "project__bar-chart")
    .style("width", function(d) {return d + "rem";}) 
    .text(function(d) {return d;}) 

1 个答案:

答案 0 :(得分:3)

你的HTML中有这个:

<div class="project">
  <div class="project__bar-chart"></div>
</div>

因此,当你这样做时:

d3.select(".project").selectAll(".project__bar-chart")

您在<div>中选择了一个先前存在的selectAll,而您的“输入”选择将减少一个元素。

解决方案:使用类project__bar-chart删除div:

<div class="project">
    //look Ma, no div
</div>

这是你的笔:https://codepen.io/anon/pen/bgKxXG?editors=1010

这是一个Stack片段:

var data = [10, 23, 14, 5, 6, 6, 6, 22, 17 ]; //The data that we're working with

d3.select(".project") //bring our focus to the container containing this class
  .selectAll(".project__bar-chart")
    .data(data) //the data is in line 1 
  .enter()
  .append("div") // Shove the data (defined in line 1) into the Div in the HTML
    .attr("class", "project__bar-chart")
    .style("width", function(d) {return d + "rem";}) 
//we're inserting a function in this style attribute to make sure that the width of the div reflects the value given. 
    .text(function(d) {return d;}) //this is what it will look like
.project {
  color: black;
    font: 1rem;
    font-family: sans-serif;
    margin: .1rem:;
    text-align: right;
}

.project__bar-chart {
    background: #be3c3c;
    border: 1px solid #802828
    }
  <head>
    <script src="https://d3js.org/d3.v4.js"></script>
    <script type="text/javascript" src="index.js"></script>
  </head>
  <body>
    <div class="project">
    </div>