![]() |
1
9
你所描述的听起来像是 treemap
维基百科页面链接到 a page by Ben Shneiderman ,它提供了一个很好的概述和指向Java实现的链接: 维基百科也 "Squarified Treemaps" by Mark Bruls, Kees Huizing and Jarke J. van Wijk (PDF)提供了一种可能的算法:
|
|
2
1
我一直在做类似的事情。我优先考虑的是简单性,而不是获得尽可能相似的纵横比。这(理论上)应该行得通。在纸上测试了N在1到10之间的一些值。 N=要创建的矩形总数, Q=最大值(宽度、高度)/最小值(宽度、高度), R=N/Q 如果Q>N/2,将矩形沿其最长边分成N部分。 如果Q<=N/2,沿最短边将矩形拆分为R(圆角int)部分。 然后沿最短边将子矩形分成N/R(向下取整int)部分。 从下一个子矩形除法的结果中减去向下舍入的值。对所有子矩形重复此操作,或直到创建所需数量的矩形。 |
![]() |
danial · 如何在多个字符串的每个位置找到最频繁的字符 2 年前 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
Diret · 获取范围内每个数字的子倍数的算法 2 年前 |
![]() |
Saif · 排序时python如何决定何时调用比较器? 2 年前 |