[英]graph plot API for ArangoDB pyArango
我正在使用 ArangoDB 社區版,我可以在AQL
對創建的圖形進行查詢,並以 JSON 格式獲取結果,該結果在 ArangoDB Web 界面工具上以圖形方式顯示。
AQL
查詢FOR v,e,p IN 1..3 OUTBOUND 'germanCity/Hamburg' GRAPH 'routeplanner'
OPTIONS{bfs :true}
RETURN p
[
{
"edges": [
{
"_key": "6392826",
"_id": "germanHighway/6392826",
"_from": "germanCity/Hamburg",
"_to": "germanCity/Cologne",
"_rev": "_WmZ77pW--D",
"distance": 500
}
],
"vertices": [
{
"_key": "Hamburg",
"_id": "germanCity/Hamburg",
"_rev": "_WmZ77Z---_",
"population": 1000000,
"isCapital": false,
"loc": [
53.5653,
10.0014
]
},
{
"_key": "Cologne",
"_id": "germanCity/Cologne",
"_rev": "_WmZ77Y6--B",
"population": 1000000,
"isCapital": false,
"loc": [
50.9364,
6.9528
]
}
]
},
{
"edges": [
{
"_key": "6392840",
"_id": "internationalHighway/6392840",
"_from": "germanCity/Hamburg",
"_to": "frenchCity/Paris",
"_rev": "_WmZ77pa--_",
"distance": 900
}
],
"vertices": [
{
"_key": "Hamburg",
"_id": "germanCity/Hamburg",
"_rev": "_WmZ77Z---_",
"population": 1000000,
"isCapital": false,
"loc": [
53.5653,
10.0014
]
},
{
"_key": "Paris",
"_id": "frenchCity/Paris",
"_rev": "_WmZ77Z---D",
"population": 4000000,
"isCapital": true,
"loc": [
48.8567,
2.3508
]
}
]
},
{
"edges": [
{
"_key": "6392843",
"_id": "internationalHighway/6392843",
"_from": "germanCity/Hamburg",
"_to": "frenchCity/Lyon",
"_rev": "_WmZ77pa--B",
"distance": 1300
}
],
"vertices": [
{
"_key": "Hamburg",
"_id": "germanCity/Hamburg",
"_rev": "_WmZ77Z---_",
"population": 1000000,
"isCapital": false,
"loc": [
53.5653,
10.0014
]
},
{
"_key": "Lyon",
"_id": "frenchCity/Lyon",
"_rev": "_WmZ77Z---B",
"population": 80000,
"isCapital": false,
"loc": [
45.76,
4.84
]
}
]
}
]
因為我們可以在 Web 界面中獲得可視化的圖形輸出,所以我想在 Language<->ArangoDB 中顯示相同的內容。 這里的語言可以是支持的驅動程序語言:Python、Java、C# 等。
我正在使用pyArango
與 ArangoDB 接口
我找不到用於在 JPG 或 matlibplot 中獲取此圖形可視化的 ArangoDB API。
除了使用以下兩個選項之外,還有其他方法嗎?
networkx.draw(networkx.graph)
matplotlib.pyplot
如果您需要圖形可視化,那么Graphviz庫適合您。 如果 Python 沒問題,那么您只需要一個 Python 綁定庫graphviz (內部使用DOT 語言表示。)
將圖形 JSON 從 Arango DB 提供給 graphviz 進行渲染非常容易。
您可以根據自己的風格自定義它,添加標簽、顏色、重塑節點等。
這是示例 JSON 的一個簡單示例:
from graphviz import Digraph
arango_graph = [
{
"edges": [
{
"_key": "6392826",
"_id": "germanHighway/6392826",
"_from": "germanCity/Hamburg",
"_to": "germanCity/Cologne",
"_rev": "_WmZ77pW--D",
"distance": 500
}
],
"vertices": [
{
"_key": "Hamburg",
"_id": "germanCity/Hamburg",
"_rev": "_WmZ77Z---_",
"population": 1000000,
"isCapital": False,
"loc": [
53.5653,
10.0014
]
},
{
"_key": "Cologne",
"_id": "germanCity/Cologne",
"_rev": "_WmZ77Y6--B",
"population": 1000000,
"isCapital": False,
"loc": [
50.9364,
6.9528
]
}
]
},
{
"edges": [
{
"_key": "6392840",
"_id": "internationalHighway/6392840",
"_from": "germanCity/Hamburg",
"_to": "frenchCity/Paris",
"_rev": "_WmZ77pa--_",
"distance": 900
}
],
"vertices": [
{
"_key": "Hamburg",
"_id": "germanCity/Hamburg",
"_rev": "_WmZ77Z---_",
"population": 1000000,
"isCapital": False,
"loc": [
53.5653,
10.0014
]
},
{
"_key": "Paris",
"_id": "frenchCity/Paris",
"_rev": "_WmZ77Z---D",
"population": 4000000,
"isCapital": True,
"loc": [
48.8567,
2.3508
]
}
]
},
{
"edges": [
{
"_key": "6392843",
"_id": "internationalHighway/6392843",
"_from": "germanCity/Hamburg",
"_to": "frenchCity/Lyon",
"_rev": "_WmZ77pa--B",
"distance": 1300
}
],
"vertices": [
{
"_key": "Hamburg",
"_id": "germanCity/Hamburg",
"_rev": "_WmZ77Z---_",
"population": 1000000,
"isCapital": False,
"loc": [
53.5653,
10.0014
]
},
{
"_key": "Lyon",
"_id": "frenchCity/Lyon",
"_rev": "_WmZ77Z---B",
"population": 80000,
"isCapital": False,
"loc": [
45.76,
4.84
]
}
]
}
]
graph_name = 'amazing'
g = Digraph(graph_name, filename=graph_name, format='jpeg', engine='neato')
g.attr(scale='2', label='Look at my graph my graph is amazing!', fontsize='18')
g.attr('node', shape='circle', fixedsize='true', width='1')
for item in arango_graph:
for vertex in item['vertices']:
g.node(vertex['_id'], label=vertex['_key'])
for edge in item['edges']:
g.edge(edge['_from'], edge['_to'], label=str(edge['distance']))
# Render to file into some directory
g.render(directory='/tmp/', filename=graph_name)
# Or just show rendered file using system default program
g.view()
僅 3 行代碼用於自定義,另外還有 5 行代碼用於提供圖形可視化渲染器。 並且請注意,Arango Web UI 不會渲染同一對節點之間的所有邊,而 graphviz 會渲染,並且您可以為每個節點設置不同的樣式。
您將需要安裝graphviz
庫和 Python 綁定
第 1 步:安裝庫
假設你的機器是 Ubuntu:
sudo apt install graphviz
第 2 步:獲取 Python 綁定
pipenv install graphviz
如果您還沒有使用Pipenv,您可以使用舊的Pip進行安裝:
pip install graphviz
第 3 步:運行示例並享受
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.