我正在尝试使用d3.js旋转带有内容的svg元素,但它总是从视图框中出来,我想要实现的是将svg旋转到位,然后我可以将svg旋转到0,90,180,270deg
但是现在我的目标是将它旋转到位。
我的代码如下(我删除了不相关的代码)
var svgContainer = d3.select("body").append("svg")
.attr("width",121)
.attr("height", 108)
//below is my code to rotate the svg
attr('transform', 'rotate(180 0 0)')
我原来的svg
放置attr('transform', 'rotate(180 0 0)')
我想要实现的目标
我的小提琴
答案 0 :(得分:3)
您需要围绕其中心旋转svg而不是0,0。
首先,您需要将一个组添加到svg中,如下所示:
var svgContainer = d3.select("body").append("svg")
.attr("width", 121 + "mm")
.attr("height", 108 + "mm")
.attr('id','board')
.style('background','#f4f4f4')
.style("border", "1px solid black").append("g");//add agroup
向此群组添加所有数据点。
接下来为了旋转,我们需要找到我们需要旋转的中心。
svgContainer.attr('transform',function(){
var me = svgContainer.node()
var x1 = me.getBBox().x + me.getBBox().width/2;//the center x about which you want to rotate
var y1 = me.getBBox().y + me.getBBox().height/2;//the center y about which you want to rotate
return `rotate(180, ${x1}, ${y1})`;//rotate 180 degrees about x and y
});
工作代码here
答案 1 :(得分:0)
试试这个:
.attr('transform', 'rotate(180 0 0)')