Graphics 树可视化和动画
我正在Haskell的树上使用多种搜索策略。我想将它们形象化,并为我在其中进行的搜索设置动画。到目前为止,我发现最好的方法是通过编写点文件(比如在Lisp的土地上)生成图像,但我怀疑这是否是最好的方法。我的树可能会变得很大,所以我不想在程序中输入每个节点的位置,我希望它们能够自动正确放置 我也看了一点,但我不确定是否可以在其中输入数据 另外,我的树数据类型非常基本:Graphics 树可视化和动画,graphics,animation,haskell,tree,Graphics,Animation,Haskell,Tree,我正在Haskell的树上使用多种搜索策略。我想将它们形象化,并为我在其中进行的搜索设置动画。到目前为止,我发现最好的方法是通过编写点文件(比如在Lisp的土地上)生成图像,但我怀疑这是否是最好的方法。我的树可能会变得很大,所以我不想在程序中输入每个节点的位置,我希望它们能够自动正确放置 我也看了一点,但我不确定是否可以在其中输入数据 另外,我的树数据类型非常基本:数据树a=Leaf a |分支(树a)(树a) 所以简而言之,我正在寻找一种在搜索策略中获得树可视化和动画的方法。我不一定要寻找一个
数据树a=Leaf a |分支(树a)(树a)
所以简而言之,我正在寻找一种在搜索策略中获得树可视化和动画的方法。我不一定要寻找一个以Haskell为中心的解决方案,但它可能会很棒。此外,能够以标准格式(如gif)输出图像/动画也是一大优势。我将展开我的评论:
我还没有调查过Ubigraph的定价政策,但你可以从他们的网站下载免费版本(“基本版”)。然后您可以安装真空ubigraph包(GHC7.0下似乎有一个构建失败的HackageDB,但我刚刚成功地在我的7.0.2下安装了它,没有问题)。完成后,您只需启动ubigraph\u服务器
,并从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"))
键入视图树
,您将得到类似于:
您可以放大/缩小并旋转它。不确定它有多实用(它像显示整个Haskell对象图一样-注意shared
[]
),但有很多设置可供使用,因此您肯定可以使它看起来更好。动画似乎也受支持。如果您选择Ubigraph路径,您可以直接使用HUbigraph绑定,例如:
import Graphics.Ubigraph
import Control.Monad
main = do
h <- initHubigraph "http://127.0.0.1:20738/RPC2"
runHubigraph op h
op = do
clear
vs <- mapM (const newVertex) [0..400]
mapM_ (setVAttr (VShape Sphere)) vs
let bind i = zipWithM (\a b -> newEdge (a,b)) vs (drop i vs ++ take i vs)
mapM_ bind [1..15]
return ()
import Graphics.Ubigraph
进口管制
main=do
h Graphviz可以为您进行布局。这不是你想要的布局吗?Lisp之地()的例子使用dot
来进行布局,而不是手动放置节点位置。@Jeremiah:是的,我想要一种布局。但有什么方法可以使它动画化吗?只需在GUI中创建具有不同高亮/颜色的多个帧或实际的视觉动画?您看过UbiGraph吗?甚至还有关于随机二叉树的令人印象深刻的介绍:以及Haskell的绑定