是否可以在 d3 中制作一个树形图,每个矩形的背景都是一个图像?我正在寻找与 Silverlight here中所做的类似的东西,但对于 d3。如果可能的话,是否有任何推荐的教程来介绍将背景连接到图像的过程?
问问题
19820 次
3 回答
8
是的,有几种在 SVG 中使用图像的方法。您可能希望将图像定义为图案,然后使用它来填充矩形。有关更多信息,请参见例如此问题(无论您要填充的元素如何,过程都是相同的)。
在 D3 代码中,它看起来像这样(简化)。
svg.append("defs")
.append("pattern")
.attr("id", "bg")
.append("image")
.attr("xlink:href", "image.jpg");
svg.append("rect")
.attr("fill", "url(#bg)");
于 2013-09-26T16:02:06.050 回答
7
需要注意的是,图像需要具有宽度、高度属性
chart.append("defs")
.append('pattern')
.attr('id', 'locked2')
.attr('patternUnits', 'userSpaceOnUse')
.attr('width', 4)
.attr('height', 4)
.append("image")
.attr("xlink:href", "locked.png")
.attr('width', 4)
.attr('height', 4);
于 2013-12-11T16:44:11.953 回答
3
使用模式在矩形中添加图像会使您的可视化变得非常缓慢。
您可以改为这样做,这是我用于矩形节点的代码到强制布局中,我想将由图像填充的矩形作为节点:
var node = svg.selectAll(".node")
.data(force.nodes())
.enter().append("g")
.attr("class", "node");
node.append("rect")
.attr("width", 80)
.attr("height", 120)
.attr("fill", 'none')
.attr("stroke", function (d) {
return colors(d.importance);
});
node.append("image")
.attr("xlink:href", function (d) { return d.cover;})
.attr("x", 2)
.attr("width", 76)
.attr("height", 120)
.on('dblclick', showInfo);
于 2015-04-27T14:23:14.347 回答