在d3中添加图像/图标而不是svg形状
Adding image/icon instead of svg shape in d3
我可以使用下面的方法定位矩形。我想将这些矩形替换为image/icon(jpg/url)
for(var i=0; i< tempdata.length; i++)
{
var name = "rect"+i;
d3.select("#floor svg").selectAll('rect')
.data(tempdata).enter()
.append("svg:rect")
.attr("stroke", "black")
.attr("fill", (d,i)=>tempdata[i].SENSOR_COLOR)
//.attr("r", 5)
.attr("width", 20)
.attr("height", 20)
.attr("x", (d,i)=>tempdata[i].CX)
.attr("y", (d,i)=>tempdata[i].CY)
.attr("idCircle",(d,i)=>name)
}
首先:不要在D3中使用for
循环来检索数据。D3已经提供了绑定和检索数据所需的所有功能。实际上,在一些情况下,使用for
循环是一个好主意,但这不是其中之一。
关于你的问题:不用append("rect")
,你必须用append("image")
:
var images = svg.selectAll(".images")
.data(data)
.enter()
.append("image");
在这个演示片段中,我设置了data
数组中图像的url,使用一个方便地命名为url
的键。然后,您必须使用:
.attr("xlink:href", function(d){return d.url})
下面是演示代码片段,使用favicons:
var svg = d3.select("body")
.append("svg")
.attr("width", 200)
.attr("height", 200);
var data = [{url:"https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2009/02/amazon.gif", x:20, y:40},
{url:"https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2009/02/skype.gif", x:90, y:110},
{url: "https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2009/02/espn.gif", x:150, y:150},
{url: "https://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2009/02/twitter.gif", x:180, y:50}];
var images = svg.selectAll(".images")
.data(data)
.enter()
.append("image");
images.attr("xlink:href", function(d){return d.url})
.attr("x", function(d){return d.x})
.attr("y", function(d){return d.y})
.attr("width", 16)
.attr("height", 16);
<script src="https://d3js.org/d3.v4.min.js"></script>
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 垂直反转拉斐尔 SVG 形状不起作用
- 微调可拖动 SVG 形状的位置,而无需更改 X
- 垂直翻转拉斐尔 SVG 形状
- 如何限制可拖动 SVG 形状的范围
- 通过可拖动的 SVG 形状设置 HTML 输入值 ?(或画布)
- 如何将 SVG 形状替换为图像
- D3JS 或 SNAPSVG 拖放仅限于加载的 svg 形状区域
- 删除 SVG 形状元素
- 动态添加一个完整的svg形状(使用纯Javascript)
- D3.js enter()对于svg形状动画已损坏,但更新和删除它们都很好
- svg形状嵌套在形状中--没有解析错误
- 将svg形状集中在一起
- 如何使用jQuery更改SVG形状的颜色
- 找到svg形状的中心
- 在d3中添加图像/图标而不是svg形状
- 如何使用D3JS创建复杂的SVG形状
- Javascript一次填充不同的svg形状
- 将SVG文本居中于SVG形状中,在刷新之间保存JavaScript变量值
- 在JavaScript中检测SVG形状的鼠标右键不起作用