【发布时间】:2017-03-17 21:08:42
【问题描述】:
我有一个 d3 图表,它的层次结构如下所示:
svg
g <- this is row labels
g <- this is col labels
g <- this is actual chart
我的问题是,我想将实际图表部分(第 3 个<g> 元素)转换为没有行和列标签的 png 文件。
所以基本上我需要一个 d3.selection 可以选择 <svg> 元素和它的第三个 <g> 元素,前 2 个 <g> 被从选择中剥离,所以当这个选择被转换为 XML 字符串并绘制 <canvas> ,没有标签。
目前我通过对 xml 进行文本处理来实现:
var source = (new XMLSerializer()).serializeToString(d3.select("svg").node());
var xmldoc = $.parseXML(source);
$(xmldoc).find("g:eq(1), g:eq(2)").remove();
var src2 = (new XMLSerializer()).serializeToString(xmldoc);
但我想知道是否有更方便和优雅的方式。谢谢。
【问题讨论】:
-
为什么不给g元素类值,然后按类选择。或唯一 id 并按 id 选择。
标签: javascript xml d3.js svg