(这解决了标题中描述的原始问题,并且不会涉及安装图表开罗或图表等的问题,这些问题实际上应该分解为不同的问题)......
graphviz 包在 Data.Graph.Inducing.Example 模块中包含一些示例图,可用于帮助您启动和运行。您可以在以下位置查看包含的图表列表:http://hackage.haskell.org/package/fgl-5.3/docs/Data-Graph-Inducing-Example.html http://hackage.haskell.org/package/fgl-5.3/docs/Data-Graph-Inductive-Example.html....我会用一个叫做clr479
.
有了图表后,您可以使用以下命令将其转换为表示点格式的内部结构:graphToDot
。请注意,您将需要提供一些参数,这些参数在http://hackage.haskell.org/package/graphviz-2999.11.0.0/docs/Data-GraphViz.html http://hackage.haskell.org/package/graphviz-2999.11.0.0/docs/Data-GraphViz.html。只是为了启动和运行,我将使用提供的nonClusteredParams
.
let graphInDotFormat = graphToDot nonClusteredParams clr479
然后,您需要将其转换为适合输入的文本dot
程序。你可以这样做renderDot . toDot
let outputText = renderDot $ toDot graphInDotFormat
并且像往常一样,您需要将文本转换为字符串才能使用putStrLn
(不要只使用show
,因为它将包含引号和转义序列,其中dot
不会明白)
putStrLn $ unpack outputText
将所有这些放在一起,最终程序 createDotFile.hs 将是
import Data.Text.Lazy
import Data.GraphViz
import Data.Graph.Inductive.Example
import Data.GraphViz.Printing
main = putStrLn $ unpack $ renderDot $ toDot $ graphToDot nonClusteredParams clr479
编译使用ghc createDotFile.hs
(请记住,如果您想对输出执行任何操作,请安装 cabal 所需的软件包以及 graphviz 本身)。在命令行上,您现在可以将该程序的输出通过管道传输到dot
,这会将其转换为常用格式...例如,这里我转换为 svg
./createDotFile | dot -Tsvg > graph.svg
在我的 Linux 机器上可以通过输入来查看
eog graph.svg
Edit-
为了澄清,haskell 程序的输出需要作为 GraphViz 的输入提供。用于在 Windows 上安装 graphviz 的 msi 文件位于此处http://www.graphviz.org/Download_windows.php http://www.graphviz.org/Download_windows.php.