DOT (język opisu wykresu)
Rozszerzenia nazw plików | .gv |
---|---|
Rodzaj mediów internetowych | text/vnd.graphviz |
Typ formatu | Język opisu wykresu |
Otwarty format ? | Tak |
DOT to język opisu grafów . Wykresy DOT to zazwyczaj pliki z rozszerzeniem nazwy pliku gv lub kropka . Preferowane jest rozszerzenie gv , aby uniknąć pomyłki z rozszerzeniem kropka używanym przez wersje programu Microsoft Word przed 2007 rokiem.
Różne programy mogą przetwarzać pliki DOT. Niektóre, takie jak dot , neutralo , twopi , circo , fdp i sfdp , mogą odczytywać plik DOT i renderować go w formie graficznej. Inne, takie jak gvpr , gc , acyclic , ccomps , sccmap i tred , odczytują pliki DOT i wykonują obliczenia na reprezentowanym wykresie. Wreszcie inne, takie jak lefty , dotty i grappa , zapewniają interaktywny interfejs. Narzędzie GVedit łączy edytor tekstu z nieinteraktywną przeglądarką obrazów. Większość programów jest częścią Graphviz lub używa go wewnętrznie.
Składnia
Typy wykresów
Grafy nieskierowane
Najprościej rzecz ujmując, DOT może być użyty do opisania grafu nieskierowanego . Graf nieskierowany pokazuje proste relacje między obiektami, takie jak przyjaźń między ludźmi. Słowo graph służy do rozpoczynania nowego wykresu, a węzły są opisane w nawiasach klamrowych. Podwójny łącznik (--) służy do pokazania relacji między węzłami.
// Nazwa wykresu i średniki są opcjonalne graph graphname { a -- b -- c ; b -- re ; }
Grafy skierowane
Podobnie jak grafy nieskierowane, DOT może opisywać grafy skierowane , takie jak schematy blokowe i drzewa zależności . Składnia jest taka sama, jak w przypadku grafów nieskierowanych, z tym wyjątkiem, że słowo digraph jest używane do rozpoczęcia wykresu, a strzałka (->) służy do pokazania relacji między węzłami.
digraph nazwa wykresu { a -> b -> c ; b -> re ; }
Atrybuty
Do wykresów, węzłów i krawędzi w plikach DOT można zastosować różne atrybuty. Atrybuty te mogą sterować takimi aspektami, jak kolor, kształt i style linii. W przypadku węzłów i krawędzi jedna lub więcej par atrybut-wartość jest umieszczanych w nawiasach kwadratowych ([]) po instrukcji i przed średnikiem (co jest opcjonalne). Atrybuty wykresu są określane jako bezpośrednie pary atrybut-wartość pod elementem wykresu, gdzie wiele atrybutów jest oddzielonych przecinkiem lub przy użyciu wielu zestawów nawiasów kwadratowych, podczas gdy atrybuty węzła są umieszczane po instrukcji zawierającej tylko nazwę węzła, ale bez nazwy węzła. relacje między kropkami.
graph graphname { // Ten atrybut dotyczy samego wykresu size = "1,1" ; // Atrybut label może być użyty do zmiany etykiety węzła a [ label = "Foo" ]; // Tutaj zmienia się kształt węzła. b [ kształt = pudełko ]; // Te krawędzie mają różne właściwości linii a -- b -- c [ color = blue ]; b -- d [ styl = kropkowany ]; // [style=invis] ukrywa węzeł. }
Etykiety podobne do HTML są dostępne tylko w wersjach Graphviz , które są nowsze niż z połowy listopada 2003 r., w szczególności nie są uważane za część wydania 1.10.
Uwagi
Dot obsługuje pojedynczą linię i wiele komentarzy w stylu C i C++ . Ponadto ignoruje wiersze, których pierwszym znakiem jest znak numeru (#).
// To jest komentarz jednowierszowy. /* To jest komentarz wielowierszowy. */ # Linie takie jak ta są również ignorowane.
Prosty przykład
Poniżej znajduje się przykładowy skrypt opisujący strukturę wiązań cząsteczki etanu . Jest to graf nieskierowany i zawiera atrybuty węzłów, jak wyjaśniono powyżej.
wykres etanu { C_0 -- H_0 [ typ = s ]; C_0 -- H_1 [ typ = s ]; C_0 -- H_2 [ typ = s ]; C_0 -- C_1 [ typ = s ]; C_1 -- H_3 [ typ = s ]; C_1 -- H_4 [ typ = s ]; C_1 -- H_5 [ typ = s ]; }
Programy układu
Język DOT definiuje wykres, ale nie zapewnia możliwości renderowania wykresu. Istnieje kilka programów, których można używać do renderowania, przeglądania i manipulowania wykresami w języku DOT:
Ogólny
-
Graphviz – zbiór narzędzi i bibliotek CLI do manipulowania i renderowania wykresów do różnych formatów, takich jak SVG , PDF , PNG itp.
- dot – narzędzie CLI do konwersji między formatami
.dot
i innymi
- dot – narzędzie CLI do konwersji między formatami
JavaScript
- Canviz – biblioteka JavaScript do renderowania plików DOT
- d3-graphviz - biblioteka JavaScript oparta na Viz.js i D3.js , która renderuje wykresy DOT i obsługuje animowane przejścia między wykresami oraz interaktywną manipulację wykresami
- Vis.js – biblioteka JavaScript , która akceptuje DOT jako dane wejściowe dla grafów sieciowych.
- Viz.js – JavaScriptowy port Graphviz, który zapewnia proste opakowanie do używania go w przeglądarce.
- hpcc-js/wasm Graphviz – szybka biblioteka WASM dla Graphviz podobna do Viz.js
Jawa
- Gephi – interaktywna platforma do wizualizacji i eksploracji wszelkiego rodzaju sieci i złożonych systemów, grafów dynamicznych i hierarchicznych
- Grappa – częściowy port Graphviz na Javę
- graphviz-java – częściowy port Graphviz na Javę typu open source dostępny na github.com
- ZGRViewer – przeglądarka DOT
Inny
- Beluging – oparta na Pythonie i Google Cloud Platform przeglądarka rozszerzeń DOT i Beluga
- dot2tex – program do konwersji plików z DOT na PGF/TikZ lub PSTricks , oba renderowane w LaTeX-u
- OmniGraffle - aplikacja do ilustracji cyfrowych dla systemu macOS , która może importować podzbiór DOT, tworząc edytowalny dokument (ale wyniku nie można wyeksportować z powrotem do DOT)
- Tulip – framework oprogramowania w C++ , który może importować pliki DOT do analizy
- VizierFX — biblioteka renderowania wykresów Apache Flex w języku ActionScript
Ograniczenia
Chociaż format DOT pozwala użytkownikowi określić szczegóły układu za pomocą atrybutów pozycyjnych, większość narzędzi opiera się na zautomatyzowanych algorytmach układu. Algorytmy te są najlepszym staraniem i czasami dają niepożądane wyniki.
Na przykład:
Digraf
g { węzeł [ kształt = zwykły tekst ]; A1 -> B1 ; A2 -> B2 ; A3 -> B3 ; A1 -> A2 [ etykieta = f ]; A2 -> A3 [ etykieta = g ]; B2 -> B3 [ etykieta = "g'" ]; B1 -> B3 [ label = "(gof)'" port tylny = s port główny = s ]; { ranga = to samo ; A1 A2 A3 } { ranga = to samo ; B1 B2 B3 } }
|
|
kodu | |
---|---|
Wyjście naturalne | Edytowane wyjście |
Występują problemy z prezentacją obrazu zatytułowanego „Obraz, który wydaje się nieprawidłowo renderowany”. Kwadrat po prawej stronie nie jest idealnym kwadratem , a niektóre etykiety są źle wyrównane ze strzałkami (np. (gof)').
Można to naprawić za pomocą edytora grafiki wektorowej . W niektórych przypadkach można to również naprawić, używając pos do określenia pozycji i atrybutu wagi do kwadratu wykresu.
Zobacz też
- lisp2dot do konwersji drzew programów podobnych do języka programowania Lisp na język DOT. Zaprojektowany do użytku z programowaniem genetycznym .