DOT (język opisu wykresu)

KROPKA
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

Graf nieskierowany

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

Graf skierowany

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

Wykres z atrybutami

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

Renderowanie przykładowego skryptu przy użyciu narzędzia dotty

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

Drzewo binarne wygenerowane w Graphviz z opisu DOT przez internetowy generator drzewa Huffmana

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

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

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
Obraz, który wydaje się nieprawidłowo renderowany
Po przesunięciu nieco etykiet i strzałek oraz zmianie rozmiaru czcionki indeksów dolnych obraz wygląda poprawnie.

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ż

Notatki

Linki zewnętrzne