gpt4 book ai didi

javascript - 限制 D3 树形图平移

转载 作者:行者123 更新时间:2023-11-28 06:07:36 25 4
gpt4 key购买 nike

我使用 D3.js 实现了缩放树形图。树状图可以缩放和平移我限制了缩放功能,但无法限制 map 的平移。我希望平移仅在 map 内部而不是在 map 外部。

这是我的树状图的当前工作实现:http://www.advbizclan.com/treemapt/

我想要它就像缩放功能一样,仅限于 map ,平移也应该仅限于 map 。

最佳答案

你的 fiddle 的问题是 LoadType是不正确的。要解决此问题,只需单击 Javascript Javascript 窗口顶部的按钮,然后选择 No wrap- in <body>LOAD TYPE .

至于你的问题。这相当简单。目前,您可以使用它来平移和缩放树形图:

.call(d3.behavior.zoom().scaleExtent([1, 3]).on("zoom", function() {
console.log(d3.event.translate)
chart.attr("transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")")

这使用 d3.event.translate翻译您的svg 。但您只想平移 y方向是?如d3.event.translate返回 x 和 y 坐标的数组,翻译需要一个 x 和 y 坐标来平移,只需为 x 和 d3.event.translate[1] 传递 0 (即 y 坐标)像这样翻译:

.on("zoom", function() {
chart.attr("transform", function(d) {
console.log(d3.event.translate);
return "translate(" + [0, d3.event.translate[1]] + ")" + " scale(" + d3.event.scale + ")"
})
}))

现在就到此为止吧。您需要为此添加限制,对于我的示例,我刚刚完成了此操作(您可以轻松实现自己的限制):

 if(d3.event.translate[1] > 0 && d3.event.translate[1] < chartHeight/2 ){
console.log('move')
return "translate(" + [0, d3.event.translate[1]] + ")" + " scale(" + d3.event.scale + ")";
}

在这里,你不能向上拖动 map ,但可以向下拖动一半。

更新了 fiddle :https://jsfiddle.net/thatoneguy/w7em39wj/

关于javascript - 限制 D3 树形图平移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36688849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com