2013-03-05 61 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的更多信息將有助於解決這種情況。