在javascript中实现一个squarified treemap

我目前正在尝试在Javascript中实现树形图算法。 更具体地说是Squarified Treemaps中描述的算法。 给出的伪代码如下所示:

procedure squarify(list of real children, list of real row, real w)
begin
    real c = head(children);
    if worst(row, w) <= worst(row++[c], w) then
        squarify(tail(children),row++[c], w)
    else
        layoutrow(row);
        squarify(children,[], width());
    fi
end

但是我的JavaScript看起来像:

var c = children[0];
if (worst(row, w) >= worst(row.concat(c), w)) {
    this.squarify(children.splice(1), row.concat(c), w);
} else {
    layoutrow(row);
    this.squarify(children, [], width());
}

据我可以告诉我的代码正常工作,但不平等是错误的方式。 我假设我在我的实现中忽略了某些东西,或者在伪代码中错误地使用了不等式? 谢谢


你想添加c到当前row ,这样做会改善宽高比,即何时

worst(row++[c], w) < worst(row, w)

我最近在github上提交了一段代码,它在TypeScript中实现了算法,并包含了现成的JavaScript:

https://github.com/nicnguyen/treemap


如果您只对布局算法感兴趣,请查看我的squarify npm软件包。 它只返回布局数据,不管你想要什么,都可以自由地呈现结果。

链接地址: http://www.djcxy.com/p/58569.html

上一篇: Implementing a squarified treemap in javascript

下一篇: Android : how to create a button over Bitmap dynamically or OVERLAYING button?