2017-09-01 48 views
1

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

我试图想出替代品,所以我仍然可以把模块放在线上。我读过,有一个Graphviz API可以调用来生成图表,但该网站的信息关闭了。

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

我很感激您可能提供的任何帮助或建议。 (PS我知道谷歌的图表API,但它不适合我在做什么。)

回答

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/[email protected]/viz.js"></script> 
 
<script src="https://unpkg.com/[email protected]/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的渲染图。

+0

我不知道这存在。非常感谢!我会一直在寻找这个绝对! – ffConundrums

+0

更新了Chrome中的工作答案 – magjac

0

如果有人在将来看到这一点,似乎老版本的谷歌图表有一个不赞成使用的API来创建graphviz图,它仍然有效,如果你在本地安装graphviz,它似乎会创建相同的图形。它适用于我的目的,所以它可能会帮助别人。

要使用它,只需在下面的网址,在那里你提供你想要生成图表的graphviz的规范,因为叶绿素PARAM:

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

例如:

这里一个简单的图形的在graphviz的说明书:

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

我可以创建使用API​​该图中,通过指定确切字符串作为URL的CH1 PARAM,如下所示。点击链接 - 并查看图表!

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

这里是一个链接,帮助形容!

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

相关问题