如何将D3 v4图表保存为图片

How to save D3 v4 chart as a picture

我找到了几个如何导出 D3 图表并将其另存为图像的示例,但不幸的是 none 对我有用。 首先,我尝试使用一个非常简单的版本来转换此 svg 并将其添加到 DOM:

let html = self.svg
        .attr("version", 1.1)
        .attr("xmlns", "http://www.w3.org/2000/svg")
        .node().parentNode.innerHTML;

let imgsrc = 'data:image/svg+xml;base64,' + btoa(html);
    let img = '<img src="' + imgsrc + '">';
    self.D3.select("#svgdataurl").html(img);

但是我得到这个错误:

知道发生了什么吗?

问题很明显了。我有另一个元素与 SVG 共享同一个容器,这是导致问题的原因。另一方面,我不得不在 D3 对象创建中包含样式,而不是使用 css 类 将样式保留在生成和可导出的图像中。