javascript - 在 d3.js 时间线图表中添加图像而不是点

标签 javascript angularjs d3.js scroll zooming

我有一个时间线图表,我想在上面放置图标/图像而不是点。

问题1

我能够添加图像,但我需要根据数据动态添加该图像。

g.selectAll(null)
 .data(temp)
 .enter()
 .append("image")
 .attr({'x':function(d){ console.log(d.x);return xScale(d.x); },
        'y':function(d){ return yScale(d.y); }
 })
 .attr("xlink:href", "Content/Images/1.png");

我有从 1.png 到 21.png 的多个图像,因此我需要根据输入数据更改图像。

我该怎么做?

问题2

另一个问题是这是一个时间线图表,因此当沿 x 轴平移时,图像也应该平移,但在我的情况下它是静态的。

如何使图像沿 x 轴平移?

我添加了 fiddle

编辑:

附上第二个问题的屏幕截图

最佳答案

关于第一个问题:

g.selectAll(null)
 .data(temp)
 .enter()
 .append("image")
 .attr('x',function(d){ return xScale(d.x); })
 .attr('y',function(d){ return yScale(d.y); })
 .attr("xlink:href",function(d,i){
   return 'Content/Images/'+i+'.jpg'
 });

最后一个问题:

当xScale改变时:

g.selectAll('image')
.attr('x',function(d){ return xScale(d.x); }))

这会更改您的代码:

function zoomed(){
        svg.select('.x-axis').call(xAxis)
        g.selectAll('image').attr('x',function(d){          
            return xScale(d.x); })
        // svg.select('.y.axis').call(yAxis)

}

关于javascript - 在 d3.js 时间线图表中添加图像而不是点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47977311/

相关文章:

javascript - jQuery - 仅选择一个子标签

javascript - 将平面 JSON 文件转换为分层 json 数据,如flare.json [d3 示例文件]

javascript - %H :%M:%S strings to timespan? 有什么好的转换方法

javascript - 将 rails 变量传递给 js 函数

javascript - 如何将 JSON 排序为值 a-z - React Native

javascript - WebGl扫描仪效果

javascript - 过滤 AngularJs UI 网格中的对象数组

css - UI-SREF 在 _layout.cshtml 中不起作用

java - 如何在angularjs中读取pdf流

javascript - 折线图中的点不会隐藏 DC.js d3-tip