graphics - 树可视化和动画

标签 graphics animation haskell tree

我正在 Haskell 中的树上使用多种搜索策略。我想将它们可视化,并为我在其中进行的搜索设置动画。到目前为止我发现的最好的是graphviz我可以通过编写 DOT 文件生成图像(就像在 Lisp 中一样),但我怀疑这是最好的方法。我的树可能会变得很大,所以我不想在程序中输入每个节点的位置,我希望它们自动正确放置。

我还看了一点Gephi但我不确定是否可以在其中输入我的数据。

此外,我的树数据类型非常基本:data Tree a = Leaf a |分支(树a)(树a)

简而言之,我正在寻找一种方法来获得搜索策略上的树可视化和动画。我不一定要寻找以 Haskell 为中心的解决方案,但它可能很棒。还能够以标准格式(例如 gif)输出图像/动画将是一个很大的优势。

最佳答案

我将扩展我的评论: 我还没有调查过 Ubigraph 的定价政策,但您可以从他们的网站下载免费版本(“基本”版本?)。然后你可以安装vacuum-ubigraph包(在GHC 7.0下似乎有一个构建失败的HackageDB,但我刚刚成功地在我的7.0.2下安装它,没有问题)。完成后,您可以启动 ubigraph_server 并开始直接从 ghci 向其“提供”数据结构:

import System.Vacuum.Ubigraph

data Tree a = Leaf a | Branch (Tree a) (Tree a)
data Root a = Root a

tree =
    Root
    (Branch
     (Branch
      (Leaf "A")
      (Leaf "B"))
     (Leaf "C"))

输入view tree,您将得到类似以下内容的内容:

enter image description here

您可以放大/缩小并旋转它。不确定它有多实用(它显示了整个 Haskell 对象图 - 注意共享 []),但是有很多设置可以使用,所以你绝对可以让它看起来更好。动画似乎也受支持。

关于graphics - 树可视化和动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267963/

相关文章:

haskell - Haskell获取代数参数的类型

haskell - 行尾的秒差距问题

macos - OpenGL 纹理单元的范围是什么?

java - Swing - 避免不同行之间的行填充

android - notifyDataSetChanged() 上的动画 ListView 项目

ios - 如何在 iOS 图表中简化突出显示动画

Swift:如何为 UITableView 的 rowHeight 设置动画?

java - 在缓冲图像上绘制时 RGB 颜色发生变化(包括 Alpha)

opengl - 在 OpenGL 中采样 16 位高度图的正确方法是什么

haskell - Haskell 中的路径依赖类型