【问题标题】:Is it possible to use graphviz directly from its source code, instead of installing it?是否可以直接从其源代码中使用graphviz,而不是安装它?
【发布时间】:2018-02-10 01:28:42
【问题描述】:

我在 python 中构建了一个简单的模块,它使用 graphviz 通过直接调用 dot 作为 shell 命令来生成一些图形。我本来打算把这个模块放到我的网站上。然而,为了使用 graphviz(和 dot),它必须安装在调用脚本的计算机上,不幸的是,我托管我的网站的公司不会在他们的服务器上安装它。

我试图想出替代方案,这样我仍然可以将模块上线。我读到有一个 graphviz API 可以被调用来生成图表,但是提供有关它的信息的站点已关闭。

然后我有一个想法 - 由于 graphviz 是开源的并且源代码可以在线获得,我是否有可能以某种方式将所有源代码复制到我的 homedir 中,并做一些事情来让 graphviz 工作而无需通过正式的安装过程?我不确定安装过程中到底发生了什么——这让我想知道这些安装过程是否是我自己可以手动完成的? (我不知道是否归结为将文件复制到正确的位置,设置环境变量等。同样,更改我的代码,调用 'dot.exe 的绝对路径对我来说不是问题',或类似的东西。)有谁知道我可以从哪里了解到这个?或者,如果这是不可能的事情 - 让我知道?

感谢您提供的任何帮助或建议。 (P.S. 我知道 google 的图表 API,但它不适合我正在做的事情。)

【问题讨论】:

    标签: graphviz dot


    【解决方案1】:

    您不能直接从源代码中使用 Graphviz,因为它是用 C 语言编写的,需要编译。

    但是,您可以使用d3-graphviz,它使用Viz.js,它是Graphviz 移植到Javascript 的。这是从固定字符串生成示例图的方法。

    <!DOCTYPE html>
    <meta charset="utf-8">
    <body>
    <script src="//d3js.org/d3.v4.min.js"></script>
    <script src="https://unpkg.com/viz.js@1.8.0/viz.js"></script>
    <script src="https://unpkg.com/d3-graphviz@0.1.2/build/d3-graphviz.min.js"></script>
    <div id="graph" style="text-align: center;"></div>
    <script>
    
    d3.select("#graph").graphviz()
        .renderDot('digraph{A -> B -> C-> A}');
    
    </script>

    如果你把你的python模块放到网上,让它输出DOT源,你应该可以写一些Javascript代码来加载它并使用d3-graphviz来渲染图形。

    【讨论】:

    • 我不知道这存在。太感谢了!我绝对会调查的!
    【解决方案2】:

    如果将来有人看到这一点,似乎旧版本的 Google Charts 有一个已弃用的 API 用于创建 graphviz 图表,该 API 仍然有效,并且它似乎可以创建相同的图表,如果你在本地安装了 graphviz .它适用于我的目的,所以也许它会帮助其他人。

    要使用它,只需创建以下 URL,在其中提供要生成的图形的 graphviz 规范,作为 chl 参数:

    https://chart.googleapis.com/chart?cht=gv&chl=<your graph string here>
    

    示例:

    这是graphviz中一个简单图形的规范:

    digraph{A->B->C->A}
    

    我可以使用 api 创建这个图表,方法是在 URL 中将确切的字符串指定为 chl 参数,如下所示。点击链接 - 并查看图表!

    https://chart.googleapis.com/chart?cht=gv&chl=digraph{A->B->C->A}

    这是一个帮助描述的链接!

    https://developers.google.com/chart/image/docs/gallery/graphviz

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    • 2012-08-21
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多