2016-10-26 7 views
3

Я хочу использовать sigma.js, чтобы показать график DOT. Но похоже, что sigma.js поддерживает только формат графика json.Как преобразовать граф точек в график json?

Есть ли некоторые инструменты bash или модуль javascript, которые могут преобразовать граф DOT в график json?

Например, из DOT графа:

graph { 
 
n1 [Label = "n1"]; 
 
n2 [Label = "n2"]; 
 
n3 [Label = "n3"]; 
 
n1 -- n2; 
 
n1 -- n3; 
 
n2 -- n2; 
 
}

Передача в JSON графа:

{ 
 
    "nodes": [ 
 
    { 
 
     "id": "n0", 
 
     "label": "A node", 
 
     "x": 0, 
 
     "y": 0, 
 
     "size": 3 
 
    }, 
 
    { 
 
     "id": "n1", 
 
     "label": "Another node", 
 
     "x": 3, 
 
     "y": 1, 
 
     "size": 2 
 
    }, 
 
    { 
 
     "id": "n2", 
 
     "label": "And a last one", 
 
     "x": 1, 
 
     "y": 3, 
 
     "size": 1 
 
    } 
 
    ], 
 
    "edges": [ 
 
    { 
 
     "id": "e0", 
 
     "source": "n0", 
 
     "target": "n1" 
 
    }, 
 
    { 
 
     "id": "e1", 
 
     "source": "n1", 
 
     "target": "n2" 
 
    }, 
 
    { 
 
     "id": "e2", 
 
     "source": "n2", 
 
     "target": "n0" 
 
    } 
 
    ] 
 
}

ответ

2

Если вы можете использовать питона и Instal л 2 упаковки (networkx и pygraphviz), вот короткий скрипт для преобразования точек графика в JSon графике:

# dot_to_json_graph.py 
# http://stackoverflow.com/questions/40262441/how-to-transform-a-dot-graph-to-json-graph 

# Packages needed : 
# sudo aptitude install python-networkx python-pygraphviz 
# 
# Syntax : 
# python dot_to_json_graph.py graph.dot 

import networkx as nx 
from networkx.readwrite import json_graph 

import sys 

if len(sys.argv)==1: 
    sys.stderr.write("Syntax : python %s dot_file\n" % sys.argv[0]) 
else: 
    dot_graph = nx.read_dot(sys.argv[1]) 
    print json_graph.dumps(dot_graph) 

Вот ваш пример, преобразованный в JSon графа:

{ "направленный" : false, "graph": [["node", {"Label": ""}], ["graph", {"file": "test.dot"}], ["edge", {}] , ["name", ""]], "nodes": [{"id": "n1", "Label": "n1"}, {"id": "n2", "Label": "n2 "}, {" id ":" n3 ", " Label ":" n3 "}]," links ": [{" source ": 0," target ": 1," key ": 0}, { «источник»: 0, «tar» получить ": 2, "ключ": 0}, {" источник ": 1, "цель": 1, "ключ": 0}], "мультиграф": истинный}

+0

Большое спасибо! – PokerFace