我有一张图形想要加载到我的d3可视化中作为背景(或仅仅是一个svg
文件,我可以在其上添加circle
元素)。该插图以svg
格式呈现。我尝试将其加载到我的html
文件中,使我能够向svg
文件(或包含它的div
)后添加元素(如圆形)。我尝试了两种方法:
<script>
d3.xml("bal.svg", "image/svg+xml", function(xml) {
document.body.appendChild(xml.documentElement);
});
var circle = svg.append("circle")
.attr("cx", 100)
.attr("cy", 100)
.attr("r", 20)
.style("fill", "red");
</script>
< p > SVG图片显示正常,但没有圆形出现。在Firefox中,外部SVG文件的HTML显示为:
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="250px" height="250px" viewBox="0 0 250 250"
enable-background="new 0 0 250 250" xml:space="preserve">
我也尝试过:
<div id="htmlEmbed"></div>
<script>
d3.select("#htmlEmbed")
.append("object")
.attr("data", "tba2.svg")
.attr("width", 500)
.attr("height", 500)
.attr("type", "image/svg");
d3.select("#htmlEmbed")
.append("circle")
.attr("cx", 600)
.attr("cy", 600)
.attr("r", 20)
.style("fill", "red");
再次,SVG图像看起来完好无损,但是没有圆形显示出来。在这种情况下,浏览器中显示的HTML代码为:
<object width="500" height="500" data="tba2.svg" type="image/svg">
#document
<svg version="1.1" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="500px" height="500px" viewBox="0 0 250 250"
enable-background="new 0 0 250 250" xml:space="preserve"> … </svg>
</object>
我觉得这应该很简单,但我不确定。任何帮助都将不胜感激。
svg
是如何定义的。请注意,您可能需要将SVG命名空间添加到任何要附加的元素中(即.append("svg:circle")
)。 - Lars Kotthoffd3.select("svg")
,而不是svg
。 - Lars Kotthoffsvg
元素吗?如果你能提供一个完整的可工作示例,那将会很有帮助。 - Lars Kotthoff