DOT (grafbeskrivningsspråk)

PUNKT
Filnamnstillägg .gv
Internet mediatyp text/vnd.graphviz
Typ av format Diagrambeskrivningsspråk _
Öppna format ? Ja

DOT är ett grafbeskrivningsspråk . DOT-grafer är vanligtvis filer med filnamnstillägget gv eller dot . Tillägget gv är att föredra, för att undvika förväxling med tilläggspunkten som användes av versioner av Microsoft Word före 2007.

Olika program kan bearbeta DOT-filer. Vissa, som dot , neato , twopi , circo , fdp och sfdp , kan läsa en DOT-fil och rendera den i grafisk form. Andra, som gvpr , gc , acyclic , ccomps , sccmap och tred , läser DOT-filer och utför beräkningar på den representerade grafen. Slutligen tillhandahåller andra, som lefty , dotty och grappa , ett interaktivt gränssnitt. GVedit - verktyget kombinerar en textredigerare med icke-interaktiv bildvisare. De flesta program är en del av Graphviz- paketet eller använder det internt.

Syntax

Graftyper

Oriktade grafer

En oriktad graf

Som enklast kan DOT användas för att beskriva en oriktad graf . En oriktad graf visar enkla relationer mellan objekt, såsom vänskap mellan människor. Nyckelordet graph används för att starta en ny graf, och noder beskrivs inom hängslen. Ett dubbelt bindestreck (--) används för att visa relationer mellan noderna.


  
        
      
 //  Grafnamnet och semikolon är valfria  grafnamn  {  a  --  b  --  c  ;  b  --  d  ;  } 

Riktade grafer

En riktad graf

I likhet med oriktade grafer kan DOT beskriva riktade grafer , såsom flödesdiagram och beroendeträd . Syntaxen är densamma som för oriktade grafer, förutom att digraph används för att börja grafen, och en pil (->) används för att visa relationer mellan noder.

  
        
      
 digraph  graphname  {  a  ->  b  ->  c  ;  b  ->  d  ;  } 

Attribut

En graf med attribut

Olika attribut kan appliceras på grafer, noder och kanter i DOT-filer. Dessa attribut kan styra aspekter som färg, form och linjestilar. placeras ett eller flera attribut-värdepar inom hakparenteser ([]) efter en sats och före semikolon (vilket är valfritt). Grafattribut anges som direkta attribut-värdepar under grafelementet, där flera attribut separeras med ett kommatecken eller med flera uppsättningar av hakparenteser, medan nodattribut placeras efter en sats som endast innehåller namnet på noden, men inte relationer mellan prickarna.

  
    
    
    
     
    
     
    
         
       
    
 graph  graphname  {  // Detta attribut gäller själva grafen  storlek  =  "1,1"  ;  // Labelattributet kan användas för att ändra etiketten för en nod  a  [  label  =  "Foo"  ];  // Här ändras nodens form.  b  [  form  =  låda  ];  // Dessa kanter har båda olika linjeegenskaper  a  --  b  --  c  [  färg  =  blå  ];  b  -  d  [  stil  =  prickad  ];  // [style=invis] döljer en nod.  } 

HTML-liknande etiketter är endast tillgängliga på versioner av Graphviz som är nyare än mitten av november 2003, i synnerhet betraktas de inte som en del av version 1.10.

Kommentarer

Dot stöder C- och C++-stil en rad kommentarer och kommentarer med flera rader . Dessutom ignorerar den rader med en nummerteckensymbol (#) som deras första tecken.

// Detta är en kommentar på en rad. /* Detta är en kommentar med flera rader. */ # Rader som denna ignoreras också.

Ett enkelt exempel

En återgivning av exempelskriptet med hjälp av verktyget dotty

Följande är ett exempelskript som beskriver bindningsstrukturen för en etanmolekyl . Detta är en oriktad graf och innehåller nodattribut som förklarats ovan.

  
       
       
       
       
       
       
       
 graf  etan  {  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  ];  } 

Layoutprogram

Binärt träd genererat i Graphviz från en DOT-beskrivning av en Huffman Tree-generator online

DOT-språket definierar en graf, men ger inte möjlighet att återge grafen. Det finns flera program som kan användas för att rendera, visa och manipulera grafer i DOT-språket:

Allmän

  • Graphviz – en samling CLI-verktyg och bibliotek för att manipulera och rendera grafer till olika format som SVG , PDF , PNG etc.
    • dot – CLI-verktyg för konvertering mellan .dot och andra format

JavaScript

  • Canviz – ett JavaScript- bibliotek för att rendera DOT-filer
  • d3-graphviz – ett JavaScript- bibliotek baserat på Viz.js och D3.js som återger DOT-grafer och stöder animerade övergångar mellan grafer och interaktiv grafmanipulation
  • Vis.js – ett JavaScript- bibliotek som accepterar DOT som indata för nätverksgrafer.
  • Viz.js – en JavaScript-port av Graphviz som ger en enkel omslag för att använda den i webbläsaren.
  • hpcc-js/wasm Graphviz – ett snabbt WASM-bibliotek för Graphviz som liknar Viz.js

Java

  • Gephi – en interaktiv visualiserings- och utforskningsplattform för alla typer av nätverk och komplexa system, dynamiska och hierarkiska grafer
  • Grappa – en delport av Graphviz till Java
  • Java med öppen källkod tillgänglig från github.com
  • ZGRViewer – en DOT-visare

Övrig

Begränsningar

Medan DOT-formatet tillåter användaren att specificera layoutdetaljer via positionsattribut, förlitar sig de flesta verktyg på automatiserade layoutalgoritmer. Dessa algoritmer är bästa ansträngningar och ger ibland oönskade resultat.

Till exempel:

Koddigraf
  
	 
	  
	  
	  
	
	   
	   
	   
	     

	     
	      
 g  {  nod  [  form  =  klartext  ]  ;  Al  ->  B1  ;  A2  ->  B2  ;  A3  ->  B3  ;  A1  ->  A2  [  etikett  =  f  ];  A2  ->  A3  [  etikett  =  g  ];  B2  ->  B3  [  etikett  =  "g'"  ];  B1  ->  B3  [  etikett  =  "(gof)'"  bakport  =  s  huvudport  =  s  ];  {  rank  =  samma  ;  A1  A2  A3  }  {  rank  =  samma  ;  B1  B2  B3  }  } 
Naturlig produktion Redigerad utgång
En bild som verkar felaktigt återgiven
Efter att ha flyttat etiketter och pilar lite, och ändrat teckensnittsstorlek på subscripts, ser bilden korrekt ut.

Det finns presentationsproblem i bilden med titeln "En bild som verkar felaktigt återgiven". Fyrkanten till höger är inte en perfekt kvadrat , och vissa etiketter är felinriktade med sina pilar (som (gof)').

Detta kan fixas med en vektorgrafikredigerare . I vissa fall kan detta också fixas genom att använda pos- attributet för att ange en position och viktattributet för att kvadrera grafen.

Se även

Anteckningar

externa länkar