У меня есть следующий кодданные D3 не показаны все элементы
JS:
var cities = [
{ name: "Moscow", x: 585, y: 565 },
{ name: "Kiev", x: 735, y: 765 },
];
HTML:
<svg .....>
// My SVG code
</svg>
<script>
// d3.select("svg").append("text").text(cities[0].name).attr("x", cities[0].x).attr("y", cities[0].y).attr("font-size",18).attr("fill", "black");
// d3.select("svg").append("text").text(cities[1].name).attr("x", cities[1].x).attr("y", cities[1].y).attr("font-size",18).attr("fill", "black");
d3.select("svg").data(cities).enter().append("text").text(function(d) { return d.name; }).attr("x", function(d) { return d.x; }).attr("y", function(d) { return d.y; }).attr("font-size",18).attr("fill", "black");
</script>
Я новичок в D3. Я пытался преобразовать код прокомментированного кода, который работает, в некоторый код, который выполняет итерацию по определенному множитею. Тем не менее, я получаю только последний элемент, напечатанный с кодом без комментария. Почему и как исправить это?
Этот пример не работает. Тем не менее, я действительно выработал ответ, хотя в настоящий момент я не уверен, почему он работает. d3.selectAll ("SVG") .data (города) .append ("Текст") .text (функция (г) {возвращение d.name;}) .attr ("х", функция (d) {return dx;}) .attr ("y", function (d) {return dy;}) .attr ("font-size", 18) .attr ("fill", "black") ; Вы должны изменить select to selectAll, а также удалить директиву 'enter'. SelectAll, потому что я предполагаю, что он выбирает только один элемент. Удаление центра. Я не уверен, почему это имеет значение. – ShaneCook
@ShaneCook Обновлен ответ. Если вы '.selectAll ('svg')' и затем '.append ('text')', то вы создадите два 'text'-элемента, которые будут добавлены к' body'. –
Моя версия работала только для двух элементов. Ответ, по крайней мере, на демонстрационную версию, правилен и работает с более крупными элементами. Большое спасибо. – ShaneCook