gpt4 book ai didi

javascript - 增加 d3 SVG 容器大小

转载 作者:行者123 更新时间:2023-11-29 21:30:18 24 4
gpt4 key购买 nike

我正在尝试动态增加我的 SVG 容器的大小,以便它适合所有数据。有一个 fiddle 解释了 SVG 的动态增加:http://jsfiddle.net/CKW5q/

但是,相同的概念不适用于双向桑基图 (d3)。以下是扩展父节点调用的函数:

function expand(node) {
node.state = "expanded";
node.children.forEach(function (child) {
child.state = "collapsed";
child._parent = this;
child.parent = null;
containChildren(child);
}, node);
HEIGHT = HEIGHT + node.children.length * 10; //update height by 10px per child
WIDTH = WIDTH + node.children.length * 10;//update width
}
svg.attr("height", HEIGHT); // update svg height

这给出了非常奇怪的结果。它确实增加了容器,但不幸的是保持了原始 SVG 尺寸不变:

Result我想在脚本开头声明的 SVG HEIGHT 和 WIDTH 需要更新,但由于某些原因无法更新。任何帮助将不胜感激。

最佳答案

你需要做这样的事情:

var Chart = (function(window, d3) {

(init code that doesn't change on resize here)

render();

function render() {
updateDimensions();
(code that needs to be re-rendered on resize here)
}

function updateDimensions() {
margin = {top: 100, right: 40, bottom: 80, left: 80}; // example

width = window.innerWidth - margin.left - margin.right;
height = window.innerHeight - margin.top - margin.bottom;
}

return {
render: render
}
})(window, d3);

window.addEventListener('resize', Chart.render);

关于javascript - 增加 d3 SVG 容器大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36650068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com