gpt4 book ai didi

javascript - 在没有翻译的情况下使用 d3 SVG Scale

转载 作者:行者123 更新时间:2023-12-02 07:06:26 26 4
gpt4 key购买 nike

我正在尝试在 SVG 和 d3 中使用 scale() 转换。我知道它通过增加坐标比例来工作,但它似乎也在翻译我的对象。当我有一个位于 (100,100) 的矩形并执行缩放 (2) 时,矩形的大小会加倍并移动到 (0,0)。如何让它在缩放时停止从 (100,100) 移动到 (0,0)。以下是我的代码:

    var mysvg = d3.select("#viz")
.append("svg")
.attr("width", 500)
.attr("height", 500)
.attr("class","mylist");

var node = mysvg.selectAll("g.node")
.data(mydata)
.enter().append("g")
.attr("class","node")
.attr("transform", function(d) { return "translate(" + d.xpos + "," + d.ypos + ")"; });

node.append("rect")
.attr("width",tileWidth)
.attr("height",tileWidth)
.attr("fill","orange")
.attr("rx",10)
.attr("ry",10);

node.append("text")
.attr("transform",function(d) { return "translate(" + tileWidth/2 + "," + tileWidth/2 +")" })
.attr("text-anchor", "middle")
.attr("dy", ".3em")
.attr("font-family","serif")
.text(function(d) { return d.symbol; });

node.on("mouseover",function(){ d3.select(this).transition().attr("transform","scale(1.2)") });
node.on("mouseout",function(){ d3.select(this).transition().attr("transform","scale(1)") });

最佳答案

可以在此处找到无需翻译的通用缩放解决方案: Scaling Around a Center Point

想法:

translate(-centerX*(factor-1), -centerY*(factor-1))
scale(factor)

关于javascript - 在没有翻译的情况下使用 d3 SVG Scale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245655/

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