Javascript D3JS每个圆/节点的不同图像

Javascript D3JS每个圆/节点的不同图像,javascript,d3.js,svg,Javascript,D3.js,Svg,所以,我想在d3js中的每个圆中应用不同的图像 一个圆圈=一个图像与其他图像不同 在我的JSON数据中,我添加了如下图像路径: {"name":"Myriel","group":1,"icon": "images/01.png"}, {"name":"Napoleon","group":1,"icon": "images/10.png"} 我在d3js中找到的唯一一个用于在圆圈中显示图像的解决方案是: 我声明refs和svg对象 for(var i=0;i<graph.nodes.len

所以,我想在d3js中的每个圆中应用不同的图像

一个圆圈=一个图像与其他图像不同

在我的JSON数据中,我添加了如下图像路径:

{"name":"Myriel","group":1,"icon": "images/01.png"},
{"name":"Napoleon","group":1,"icon": "images/10.png"}
我在d3js中找到的唯一一个用于在圆圈中显示图像的解决方案是:

我声明refs和svg对象

for(var i=0;i<graph.nodes.length;i++){

   var defs = svg.append('svg:defs');
            defs.append('svg:pattern')
                .data(graph.nodes)
                .attr('id', "image"+i)
                .attr('width', '1')
                .attr('height', '1')
                .append('svg:image')
                .attr('xlink:href', function(d) { return(graph.nodes[i].icon); })
                .attr('x', 0)
                .attr('y', 0)
                .attr('width', 120)
                .attr('height', 120);
}
如果你想要更多的解释,告诉我。 对不起,我的英语


提前感谢您的帮助

这是我在项目中的做法()。我使用的是png作为图像处理工具,但如果您只是用svg路径中的ID替换它,则非常类似

            node
                .append("svg:image")
                .attr("class", "circle")
                .attr("xlink:href", function (d) {
                    return "/pics/arda/creature/" + d.uniquename + "_familytree.png";
                })
                .attr("x", function (d) {
                    return familytree.posXY(d);
                })
                .attr("y", function (d) {
                    return familytree.posXY(d);
                })
                .attr("width", function (d) {
                    return familytree.sizeXY(d);
                })
                .attr("height", function (d) {
                    return familytree.sizeXY(d);
                })
                .on("error", function () {
                    d3.select(this).style("visibility", "hidden");
                });
所以你应该测试一下这是否适合你

.attr("xlink:href", function (d) {
                    return "url(#image1)";
                })

有什么问题吗?你能不能提供一个JSFIDLE?我不能构建一个JSFIDLE,因为数据。。。这里的问题是,我在所有圆圈中都有相同的图像,而我希望在每个圆圈中都有不同的图像。用您的数据结构制作一个最小的可复制示例。如果它不起作用,我们可能会帮助你,如果我们至少可以看到整个代码。我尝试了一些东西,但现在,我只有一个圆圈。。看见
.attr("xlink:href", function (d) {
                    return "url(#image1)";
                })