首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中实现一个正方形的treemap

在javascript中实现一个正方形的treemap
EN

Stack Overflow用户
提问于 2012-03-27 06:12:45
回答 2查看 8.8K关注 0票数 9

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

代码语言:javascript
复制
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看起来像这样:

代码语言: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());
}

据我所知,我的代码工作正常,但不平等是错误的。我假设我在我的实现中忽略了一些东西,或者在伪代码中不等式是错误的吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-06-23 04:47:16

你想要添加c到当前的row,当这样做会改善宽高比,例如,当

代码语言:javascript
复制
worst(row++[c], w) < worst(row, w)

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

https://github.com/nicnguyen/treemap

票数 4
EN

Stack Overflow用户

发布于 2017-06-03 03:53:12

如果您只对布局算法感兴趣,请查看我的squarify npm包。它只返回布局数据,让您可以随心所欲地呈现结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9880635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档