2
Я упростил пример как можно больше. У меня есть файл data.csv и вы хотите создать элементы, как показано ниже (Результат). Есть ли какой-то изящный способ? Спасибо.d3.js: добавить элементы в соответствии с значением атрибута данных
данных (data.csv):
id, name, value
1, fruits, apple
2, fruits, pear
3, fruits, strawberry
4, vegetables, carrot
5, vegetables, celery
...
Результат:
<g class="groups" id="fruits">
<circle class="some" id="apple"/>
<circle class="some" id="pear"/>
<circle class="some" id="strawberry"/>
...
</g>
<g class="groups" id="vegetables">
<circle class="some" id="carrot">
<circle class="some" id="celery">
...
</g>
Я пытался что-то вроде этого:
d3.csv("data.csv", function(data) {
var svg = ...
var groups = svg.selectAll(".groups")
.data(data)
.enter().append("g")
.attr("class", "groups")
.attr("id", function(d) { return d.name; });
groups.selectAll(".some")
.data(data, function(d) { return d.id; })
.enter().append("circle")
.attr("class", "some")
.attr("id", function(d) { return d.value; });
});
Но он выбирает все строки. Я не знаю, как выбирать и вводить только строки с тем же именем, что и родительский элемент g.
Он работает, спасибо. Что делать, если я хочу загрузить данные о кругах из другого файла, например. data2? – user2597379
То же самое. Возможно, вам придется настроить имена атрибутов, но принцип тот же. –
Это было похоже на работы, но после некоторых экспериментов я понял, что это не так. Когда я скопировал и пробовал ваш пример, результат был другим. g элементов в порядке, но в каждом из них есть только один круг (яблоко). – user2597379