2017-09-01 84 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

相關問題