在 d3.js 中缩放数据集
Zooming datasets in d3.js
我在d3.js中覆盖了两个数据集,一个边界图和一个点图。我希望能够同时缩放两个数据集。使用当前代码时,只有点图响应缩放。如何同时缩放两个数据集
代码如下所示
var canvas = d3.select("body").append("svg")
.attr("width",260)
.attr("height",400)
d3.json("/Maps/iowastate.json",function (data){
var group = canvas.selectAll("g")
.data(data.features)
.enter()
.append("g")
var projection =d3.geo.mercator()
.scale(250)
//.translate([0,0]);
var path = d3.geo.path().projection(projection);
var areas = group.append("path")
.attr("d", path)
.attr("class","area")
.attr("fill","black");
d3.csv("/Maps/detectors.csv",function (d){
var group = canvas.selectAll("g")
.data(d)
.enter()
.append("circle")
.attr("cx", function(d) {
return projection([d.StartLong,d.StartLat])[0];
})
.attr("cy", function(d,i) {
return projection([d.StartLong,d.StartLat])[1];
})
.attr("r", 0.1)
.style("fill", "red");
//console.log(projection(d[0].StartLat))
var zoom = d3.behavior.zoom()
.on("zoom",function(){
group.attr("transform","translate("+
d3.event.translate.join(",")+")scale("+d3.event.scale+")");
group.selectAll("path")
.attr("d", path.projection(projection));
});
canvas.call(zoom)
})
var zoom = d3.behavior.zoom()
.on("zoom",function(){
group.attr("transform","translate("+
d3.event.translate.join(",")+")scale("+d3.event.scale+")");
group.selectAll("path")
.attr("d", path.projection(projection));
});
canvas.call(zoom)
})
您正在对同一组元素而不是两个不同的图层应用正确的修改,但要应用两次。要使其正常工作,请保留对其他group
的引用(例如,通过使用不同的变量名称)并将转换应用于两个组。
相关文章:
- d3-将数据附加到轴以进行重新缩放
- 在交互式图表中动态缩放数据,其中数据会发生变化
- 如何根据浏览器缩放自动调整数据表
- 在某些缩放级别不显示数据的图表
- 如何修复集群捆绑图中的缩放和平移
- 如何更改数据缩放图像值
- 是否有一个好的图表 API,可以在滚动/缩放时使用 Ajax 延迟加载大型数据集
- 在 d3.js 中缩放数据集
- 如何在openstreetmap中编辑数据层可见性的缩放级别
- mapbox.js 1.6.2-更改缩放级别的平铺集
- 图表与动态图:数据采样取决于缩放
- 如何在可缩放的日冕图中使用CSV数据
- AmMap -在更新地图数据后保持相同的缩放级别和位置
- 在使用D3和React缩放时更新数据
- 可缩放d3折线图有消失的数据
- 在缩放jqplot后获取画布中的数据点列表
- 没有缩放,Highstock没有显示最大数据值
- 如何改变集群缩放级别点击与传单地图
- D3数据格式,如可缩放的日冕图
- D3.JS时间序列折线图,具有实时数据、平移和缩放功能