2013-04-17 2 views
0

Это весь код, который нужно:Добавление текста к недавно добавленного элемента

https://raw.github.com/alignedleft/d3-book/master/chapter_09/25_adding_values.html

Он ссылается D3 локально, но и для более быстрой работы вы можете просто refrence его со своего сайта, как это вместо:

<script src="http://d3js.org/d3.v3.min.js"></script> 

это создаст некоторую диаграмму, как это:

enter image description here

Обратите внимание на недавно добавленные диаграммы на те, у которых на них нет текстовой метки.

Часть кода, добавление меток в самом конце кода и заключается в следующем:

  svg.selectAll("text") 
       .data(dataset) 
       .transition() 
       .duration(500) 
       .text(function(d) { 
        return d; 
       }) 
       .attr("x", function(d, i) { 
        return xScale(i) + xScale.rangeBand()/2; 
       }) 
       .attr("y", function(d) { 
        return h - yScale(d) + 14; 
       }); 

В качестве упражнения я пытаюсь изменить код, так что я могу обновить новые бары и с их текстовые данные, но все еще не могли понять это. Как бы Вы это сделали?

ответ

2

Вам необходимо обработать выбор .enter(). Код будет выглядеть следующим образом.

svg.selectAll("text") 
      .data(dataset) 
      .enter() 
      .append("text") 
      .text(function(d) { 
       return d; 
      }) 
      .attr("x", function(d, i) { 
       return xScale(i) + xScale.rangeBand()/2; 
      }) 
      .attr("y", function(d) { 
       return h - yScale(d) + 14; 
      }); 

Посмотрите на this tutorial для получения дополнительной информации.

+0

спасибо за то, что вы используете метод ввода() ... Мы приближаемся :), но если вы попробуете это, весь текст выйдет из строя сейчас ... так что может быть больше работы с весами или чем-то ... – 2013-04-17 15:17:44

+1

Это, скорее всего, из-за того, что вы передаете данные в '.data()' - порядок действительно имеет значение, если вы не укажете функцию, которая сообщает ему, как сопоставлять элементы. Все это объясняется в учебнике, с которым я связан. –

Смежные вопросы