簡體   English   中英

Web應用程序中的交互式Graphviz圖

[英]Interactive Graphviz graphs in a web application

我正在嘗試使用Python在我的Django Web應用程序中進行一些交互式圖形可視化。 我找到了Graphviz並且能夠使用Pydot(Graphviz的點語言的Python接口)在我的應用程序上輸出靜態圖形(作為.png圖像)。

但是,我希望使我的圖形更具交互性,例如能夠在將鼠標移到其上時突出顯示節點,使節點可點擊,將節點拖動到其他位置並放大圖形。

有沒有辦法在Graphviz中做到這一點? 或者一般來說,有沒有辦法為我的Django應用程序制作交互式圖形而無需使用Flash? 我不想使用閃存,因為我不熟悉它,因為我想要可視化一個相當大的數據集。

試試Javascript Infovis Toolkit 它全部在瀏覽器畫布中實現,因此不需要Flash,只有支持<canvas>標簽的體面瀏覽器。 圖形可視化示例在這里這里這里 ,其他演示在這里

Canviz來源 )。 但是,節點還沒有可點擊(它們是使用圖像映射的舊版本。代碼庫已經更改,現在使用javascript在客戶端進行渲染,這就是為什么還沒有啟用可點擊鏈接的原因。

這是我發現的最好的,但是他們還有很多其他的。

mxGraph (不是免費的)

您可以使用D3.js進行圖形可視化(請參閱此處了解D3js中圖形可視化的示例 ,並查看如何進行交互式網絡可視化 )。

對於后端(如果有必要的東西不僅僅是一個json文件來表示圖形 - 即它是否很大),那么你可以使用Python模塊來繪制圖形, NetworkX

旁注,這是我簡單的交互式圖形可視化示例

在此輸入圖像描述

只需使用DOT和HTML,您就可以做到這一點。

生成客戶端地圖並將其覆蓋在PNG圖像上。 (將地圖代碼插入HTML頁面。)

dot test.dot -Tpng -o test.png -Tcmapx -o test.map

SVG導出可以直接點擊。

這似乎是一種適合您嘗試做的方法可能是在瀏覽器中使用svg和/或javascript。 我認為大多數現代瀏覽器都支持SVG,並允許你做一些非常酷的交互式圖形。 服務器可以提供渲染圖形所需的數據點的json提要。 我不知道可用的工具,但我已經看到一些非常酷的圖形演示,無需通過客戶端方法構建。

作為替代方案,您可以預渲染用戶可能會查看的一組圖形圖像,然后在用戶與圖形交互時獲取這些圖形。 如果圖形不經常更改,並且用戶所做的更改次數很少,則可能會有效,但每次圖形更改時都必須重新渲染。

我做了你不久前想做的事。 上下文可視化一個粗糙的SalesForce模式。

首先,graphviz只適用於繪圖,而不適用於繪圖。 你可以生成SVG,但是在經過相當多的(結果是無用的)努力之后,我無法讓它與IE一起工作。

我發現這個Java Applet ZGRViewer已經足夠了,雖然applet對我的品味感覺有點過時,但它在瀏覽器上運行得非常好。

我基本上手工編寫了一個進程調用服務,生成點文件並運行它們思考(dotty,是嗎?) - visulazation applet讀取本機點文件格式。

我也想到了一個我想到的V2(從未發生過) - 它是AJAX控制工具包的一部分 - Seadragon

如果你想在ASP.NET中看到代碼,我可以發布它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM