我正在尝试使用dagre-d3创建DAG(有向无环图)。这些DAG的数据来自数据库,每个DAG的数据是不同的,因此在添加所有节点和边缘到图形之前,我不知道要给包含svg的宽度/高度。
因此,理想情况下,在添加所有节点和边缘后,我希望调用像d3.select("#svg1").resize_to_match_contents()
这样的函数,以确保所有节点可见且svg不会太大。当然,这种函数不存在,我也不知道如何实现它。我知道可以调用d3.select("#svg1").attr("height", "10")
来设置高度,但不知道如何检索/计算SVG内部<g>
元素的高度。
getBBox()
是关键。以下代码可以正常工作:var bbox = d3.select("#svg{{ loop.index }}").node().getBBox(); d3.select("#svg{{ loop.index }}").attr("height", bbox.height + 40).attr('width', bbox.width + 40);
- Dennis Kaarsemaker