我希望使用d3.js根据数据对象在每个网格中放置图像。
在这里,使用d3js库将每个正方形渲染为网格。问题在于图像未显示在每个网格内,但在每个适当的网格内呈现正确。您可以在下面的图像中找到当前结果和预期结果。
以下是代码:
var data = [
[{
"x": 1,
"y": 1,
"width": 400,
"height": 400,
"image": "https://lh3.googleusercontent.com/wAPeTvxh_EwOisF8kMR2L2eOrIOzjfA5AjE28W5asyfGeH85glwrO6zyqL71dCC26R63chADTO7DLOjnqRoXXOAB8t2f4C3QnU6o0BA"
}, {
"x": 401,
"y": 1,
"width": 400,
"height": 400,
"image": "https://lh3.googleusercontent.com/Skyrdo9OUfXzZ-1N-jdhGbmpkx6G7r9QYfA3p6EKhb0u9ES4cZD9Z9C92BxM3A9VyLgHJHB7ALTPOlIfJxVLrpzYrLzPIUZsQX9mD4U"
}],
[{
"x": 1,
"y": 401,
"width": 400,
"height": 400,
"image": "https://lh3.googleusercontent.com/0cDOOJjp8pUGDDFLqHFITEi35uMGZ5wHpZ9KTKridxk71kpR9MfeydpQqG5n8Mvetvkg5iVuZGeL2xMvxgBY_UL-T9p0x_Eo4EAh"
}, {
"x": 401,
"y": 401,
"width": 400,
"height": 400,
"image": "https://lh3.googleusercontent.com/IsGCHOz6W_CthCyx28PlKaZSzTHMY-nzZVBu0UUKTkhfD52WmJ-xvOIverssPjgBAGeSIBGwbP2qt7OJ-HpI7t-mToRc_xSFhCDv"
}]
]
var grid = d3
.select("#grid")
.append("svg")
.attr("width", "1350px")
.attr("height", "1350px");
var row = grid
.selectAll(".row")
.data(data)
.enter()
.append("g")
.attr("class", "row");
var column = row
.selectAll(".square")
.data(function(d) {
return d;
})
.enter()
.append("rect")
.attr("class", "square")
.attr("x", function(d) {
return d.x;
})
.attr("y", function(d) {
return d.y;
})
.attr("width", function(d) {
return d.width;
})
.attr("height", function(d) {
return d.height;
})
.style("fill", "#fff")
.style("stroke", "#222")
.attr("transform", "translate(50,50)scale(0.5)")
.append("svg:image")
.attr("xlink:href", function(d) {
return d.image;
})
.attr("width", function(d) {
return d.width;
})
.attr("height", function(d) {
return d.height;
});
<html>
<head>
<script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<body>
<div id="grid"></div>
<script src="stack.js" type="text/javascript"></script>
</body>
</html>
图片正常渲染在rect
中,但是没有显示出来。
这是当前的结果:
这是期望的结果:
有人能找出问题所在吗?任何帮助将不胜感激。