[Извините, что заголовок был довольно плохо сформулирован. Я бы изменил его, если бы мог.]Как добавить <text> для каждого элемента данных в D3 svg
Я ищу способ добавления текстовых элементов из массива или массивов в данные.
EDIT: Я уже могу войти на уровень 1 .data(mydata).enter()
. То, что я здесь делаю, - это второй уровень входа. Например, если mydata
был объектом, который содержал массив mydata.sourceLinks
.
ср. в коментарии в этом небольшом фрагменте кода:
var c = svg.append("g")
.selectAll(".node")
.data(d.nodes)
.enter()
.append("g")
.attr("class", "node")
.attr("transform", function(i) {
return "translate(" + i.x + "," + i.y + ")"
})
c.append("text")
.attr("x", -200)
.attr("y", 30)
.attr("text-anchor", "start")
.attr("font-size","10px")
.text(function(d){
// d.sourceLinks is an array of elements
// console.log(d.sourceLinks[0].target.name);
// Here I would like to apped('text') for each of the elements in the array
// and write d.sourceLinks[i].target.name in this <text>
})
;
Я пробовал много разных вещей с .data (г) Введите желанную(), но он никогда не работал, и я получил много о ошибок.
Я также попытался вставить html вместо текста, где я мог бы вставлять строки (это в конечном итоге то, чего я пытаюсь достичь).
Я также попытался
c.append("foreignobject")
.filter(function(i) { // left nodes
return i.x < width/2;
})
.attr('class','sublabel')
.attr("x", -200)
.attr("y", 30)
.attr("width", 200)
.attr("height", 200)
.append("body")
.attr("xmlns","http://www.w3.org/1999/xhtml")
.append("div");
, но это никогда не обнаруживался где-нибудь в моей странице.
Это базовый первый уровень входа, который я уже использую. То, что я прошу, - это второй уровень входа. Например, если данные были массивом массивов –
О, ладно, дайте мне посмотреть –
@stallingone Я бы сделал что-то вроде этого, я думаю, https://jsfiddle.net/t3eyqu7z/1/ –