Рубрики
Без рубрики

D3.js – join ()

Обновить сообщение от D3.js .merge (), чтобы .Йоина ()

Автор оригинала: Bryony Miles.

Точно так же, как вы думали, вы должны справиться с функцией .merge (), она снова меняется в версии D3.js версии 5.

Здесь нет кризиса, .merge () отлично работает в версии 5, но это всегда хорошо, чтобы обнять изменения!

.join () предназначен как

более удобные и запоминающиеся API для присоединения данных, не жертвуя

Существует блестящее объяснение того, как он работает, когда вы добавляете данные в один элемент Майк Босток – Нет необходимости расширяться там.

Эта статья – это быстрое расширение, чтобы показать, как вы можете добавить данные в группу, которая затем может быть применена к нескольким элементам.

В Эта статья Я объясняю процесс с функциональностью .merge ().

Хорошая новость заключается в том, что использование .join () вместо этого меньше строк кода, а также весь дополнительный потенциал для выделения элементов данных, которые являются текущими и новыми.

Итак, функция update_group в Оригинальный демоверсии :

       //join
       var my_group = svg.selectAll('.chart_group')
                         .data(data, d => d.id);
       //exit and remove
       my_group.exit().remove();
       //enter new groups
       var enter = my_group.enter()
                           .append("g")
                           .attr("class","chart_group");

       //append elements to new group
       enter.append("rect").attr("class","group_rect");
       enter.append("text").attr("class","group_text");
       enter.append("image").attr("class","group_image");

       //merge 
       my_group = my_group.merge(enter);

становится этим в Новая демонстрация

//join
 var my_group = svg.selectAll('.chart_group')
                   .data(data, d => d.id)
                   .join(function(group){
                    var enter = group.append("g").attr("class","chart_group");
                            enter.append("rect").attr("class","group_rect");
                            enter.append("text").attr("class","group_text");
                            enter.append("image").attr("class","group_image");
                            return enter;
                    });

Что может быть проще! Спасибо снова в чудо г-на Бостока.