该g
元素没有x
和y
属性。您可以在 SVG 规范中找到此类信息:http: //www.w3.org/TR/SVG/struct.html#GElement
您可以使用以下方法移动g
元素:http translate
transform
: //www.w3.org/TR/SVG/coords.html#TransformAttribute
例如,text
元素确实具有x
和y
属性:http ://www.w3.org/TR/SVG/text.html#TextElement
在上一个代码片段中,您将两个不同的值写入 transform 属性。后一个值 ,"translate(-150,-150)"
将覆盖前一个值。
var q = svg.append("g")
.attr("transform", function(d,i) {return "translate ("+ arc[i].centroid() +")";})
.attr("transform", "translate(-150,-150)")
SVG 变换属性接受变换定义列表:http ://www.w3.org/TR/SVG/coords.html#TransformAttribute
所以最后一段代码应该写成:
var q = svg.append("g")
.attr("transform", function(d,i) {
return "translate ("+ arc[i].centroid() +")" + "translate(100,-40)";
});
如果您g
在浏览器的开发者工具中检查该元素(在 Chrome 中右键单击,选择inspect element
),您将看到:
<g transform="translate (-124.42599471897063,11.965443501796923)translate(100,-40)">
<path d="M0,3.989422804014327A3.989422804014327,3.989422804014327 0 1,1 0,-3.989422804014327A3.989422804014327,3.989422804014327 0 1,1 0,3.989422804014327Z" transform="translate(-10, -5)" style="fill: #000000; "></path>
<text>Hello</text>
</g>
您会在容器上看到两个翻译操作。http://jsfiddle.net/xwZjN/30/
另一种选择是将路径和文本分组到另一个 g 容器中。像这样的东西:
<g transform="translate (-124.42599471897063,11.965443501796923)">
<g transform="translate(100,-40)">
<path d="M0,3.989422804014327A3.989422804014327,3.989422804014327 0 1,1 0,-3.989422804014327A3.989422804014327,3.989422804014327 0 1,1 0,3.989422804014327Z" transform="translate(-10, -5)" style="fill: #000000; "></path>
<text>Hello</text>
</g>
</g>