【发布时间】:2015-09-24 14:32:47
【问题描述】:
所以,我想在 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);
}
我像这样构建了我的节点/圈子:
var node = svg.selectAll(".node")
.data(graph.nodes)
.enter().append("circle")
.attr("class", "node")
.attr("r", 30)
.style("fill","url(#image1)")
.on("mouseover",function(){
var sel = d3.select(this)
sel.moveToFront();
})
.on("mouseout",function(){
var sel = d3.select(this);
sel.moveToBack();
});
如果你想要更多解释,请告诉我。 对不起我的英语......
提前感谢您的帮助!
【问题讨论】:
-
似乎是什么问题?你能提供一个jsfiddle吗?
-
我无法构建 jsfiddle,它不起作用,因为数据...这里的问题是,我在所有圈子中都有相同的图像,而我想要在每个圈子中使用不同的图像..
-
用你的数据结构做一个最小可重复的例子。如果它不起作用,如果我们至少可以看到整个代码,我们也许可以为您提供帮助。
-
我尝试了一些东西,但现在,我只有一个圈..jsfiddle.net/hn66hpev
标签: javascript d3.js svg