javascript - 如何将多个图像添加到 D3 中的 svg(数量基于数据集中的值)

标签 javascript d3.js

如何多次将图像应用于 svg,数量基于数据集中的值?我正在尝试这样做:

数据集:

var dataset = [{"attribute": "att1", "data": "5"}, {"attribute": "att2", "data": "10"}]

SVG:

属性1

$$$$$

攻击2

$$$$$$$$$$

...$ 是图像。

下面的代码根据属性出现次数而不是“数据”添加图像。所以我得到2张图片。如何获得出现次数分别为 5 次和 10 次的 2 组图像?

var w = 300;
var h = 300;
var p = 20;

var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h)
.style("border", "1px solid black");

var img = svg.selectAll("image")
.data(dataset)
.enter()
.append("svg:image")
.attr("x", function(d,i) {return (i * 10);})
.attr("width", 50)
.attr("height", 50)
.style("border", "1px solid black")
.attr("xlink:href", "images/xyz.png");

最佳答案

这是一个使用d3.range()设置重复次数的解决方案。

在此解决方案中,我将数据绑定(bind)到父组...

var groups = svg.selectAll("foo")
    .data(data)

...并且,在图像选择中,我使用了一个数组,其长度由数据集中的属性 data 决定:

var images = groups.selectAll("bar")
    .data(d => d3.range(d.data))

查看演示:

var dataset = [{
  image: "http://icons.webpatashala.com/icons/Blueberry-Basic-Icons/Png/rss-icon.PNG",
  data: 5
}, {
  image: "http://www.ucdmc.ucdavis.edu/global/images/icons/instagram-32x32.png",
  data: 3
}, {
  image: "http://www.axadledirect.com/assets/images/icons/share/32x32/google.png",
  data: 8
}];

var svg = d3.select("svg");

var groups = svg.selectAll("foo")
    .data(dataset)
    .enter()
    .append("g")
    .attr("transform", (d, i) => "translate(10," + (10 + i * 40) + ")");

var images = groups.selectAll("bar")
    .data(d => d3.range(d.data))
    .enter()
    .append("svg:image")
    .attr("x", function(d, i) {
        return (i * 35);
    })
    .attr("xlink:href", function(d) {
        return d3.select(this.parentNode).datum().image
    });
<script src="https://d3js.org/d3.v4.min.js"></script>
<svg></svg>

关于javascript - 如何将多个图像添加到 D3 中的 svg(数量基于数据集中的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42207429/

相关文章:

javascript - 在 ExtJS MVC 中在哪里添加全局变量?

javascript - 无法使用jspdf将html导出为pdf

d3.js - C3.js将折线图Y轴的标签位置更改为Y轴居中

javascript - Switch case 传递多个值

javascript - wordpress 中的 javascript/jquery 代码问题

JavaScript XML-RPC 调用未执行

javascript - D3.js - 具有多个环和动画过渡的圆环图

javascript - 使用DOM对象跟踪路径

javascript - d3 工具提示 - 在 d3 折线图中为工具提示添加 div

javascript - 使用 D3 有条件地附加名称集的元素