2013-03-05 30 views
12

我想添加一个svg图像'.svg'扩展到我的图表(另一个svg图像创建与d3)。d3追加一个图像与svg扩展

这是代码:

d3.select("#chart1 svg") 
    .append("svg:image") 
    .attr("xlink:href", "img/icons/sun.svg") 
    .attr("width", 40) 
    .attr("height", 40) 
    .attr("x", 228) 
    .attr("y",53); 

正如你可以看到我设置 “的XLink:href” 属性,但D3改变了这种在浏览器中HREF:

<image href="img/icons/sun.svg" width="40" height="40" x="228" y="53"></image> 

事实上,如果我使用PNG扩展,此代码完美工作。任何想法?

+1

我也有问题。显然,如果前缀是已知的命名空间,D3将删除前缀。这里有更多关于命名空间的细节:https://github.com/mbostock/d3/wiki/Namespaces – 2013-09-21 14:15:16

+1

只要属性添加了'setAttributeNS',它就可以在所有浏览器中正常工作(并且很清楚D3会这样做)。如果您希望以特定方式完成文档/元素序列化,那么属性本身缺少的前缀实际上只是一个问题。 – 2013-10-22 11:48:07

+0

看起来像今天仍然是一件事...迄今有没有人找到解决方案? – 2016-07-01 12:05:50

回答

14

的代码应该工作的是 - 在这里你可以看到一个附加.svg文件到D3的一个例子:

http://jsfiddle.net/am8ZB/

不要忘了,这是可能的图片其实是有,但你只是无法看到它 - 您应该使用浏览器开发人员工具检查该页面,以查看图片是否已放置在视图区域之外(例如,由于您的x/y值)。

有关#chart1的更多信息将有助于解决这种情况。