javascript - SVG/Raphael,如何在 JavaScript 中实现 DOT 算法? (图组织)

标签 javascript ruby-on-rails graph svg raphael

我的 fiddle :http://jsfiddle.net/G5mTx/10/

正如您所看到的,我当前组织节点的方式没有平衡,并且当父节点有超过 1 个子节点时存在一些重叠。

对于那些不熟悉 DOT 算法的人,可以在这里找到简短、模糊的解释:http://www.ece.uci.edu/~jhahn/pdf/dot.pdf

基本上,DOT 组织节点使得图形是最佳的,这意味着它是简洁的、具有最小的线交叉并且是平衡的。

我听说有些人在将 DOT 算法发送到客户端之前运行服务器端...这将始终更快...但我需要每个节点都具有悬停和单击状态,正如我计划的那样允许用户重新分配箭头/线条指向的位置。

我的意思是,我可以在服务器端生成 SVG。但是我如何将悬停/单击事件连接到节点,并告诉服务器节点在重新分配行时代表哪个模型?

注意:我的服务器运行 Ruby on Rails 2.3.8

最佳答案

我在这种情况下苦苦挣扎,并在我的服务器上运行了 DOT 算法,仅将节点的新坐标发送回浏览器。最终我发现这个设置并不令人满意。

我改用 D3's force layout algorithm ,它是用 Javascript 实现的,看起来比 DOT 更现代,现在我高兴多了。

关于javascript - SVG/Raphael,如何在 JavaScript 中实现 DOT 算法? (图组织),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7556206/

相关文章:

javascript - 如何保存 OS X 仪表板小部件生成的文件?

javascript - pinmarklet.js 获取图片

ruby-on-rails - Rails 控制台期间箭头键无法正常工作

ruby-on-rails - 地理编码 API 响应速度不够快

algorithm - 如何在加权(无向)图中的两个节点之间找到长度为 X 的路径

javascript - Redux-form 字段数组,删除函数抛出奇怪的错误

javascript - jquery RegExp 没有按我的预期工作

ruby-on-rails - Rufus cron 调度在 jetty 服务器上不起作用

algorithm - 最短路径不是图中的路径

java - JFreeChart 不会在线程上的每次迭代时显示图形?