是否可以直接从源代码中使用graphviz,而不是安装它?

时间:2017-09-01 02:20:07

标签: graphviz dot

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

我试图考虑替代方案,所以我仍然可以将模块放在网上。我曾经读过有一个graphviz API可以被调用来生成图表,但是有关它的信息的网站已经关闭了。

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

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

2 个答案:

答案 0 :(得分:0)

如果有人在将来看到这一点,似乎旧版Google图表有一个弃用的API用于创建graphviz图表,这仍然有效,如果你在本地安装了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

答案 1 :(得分:0)

你不能直接从源代码使用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来渲染图形。