ใช้งาน Graphviz online

Graphviz online

GraphvizOnline lets you edit and view GraphViz diagrams online. You can use GraphvizOnline online here.

Resources

DOT Language – digraph examples

Node

digraph DG {
  A
}
digraph DG {
  A
  B
}

Edge

digraph DG {
  A -> B
}
digraph DG {
  A -> B
  A -> C
}

or

digraph DG {
  A -> {B, C}
}
digraph DG {
  A -> B
  A -> C
  B -> C
}
digraph DG {
  A -> {B, C, D}
  {B, C} -> {F}
}
digraph DG {
  A -> {B, C, D}
  {B, C, D} -> {F}
}

or

digraph DG {
  A -> {B, C, D} -> {F}
}

Shape

digraph DG {

  A [shape=diamond]
  B [shape=box]
  C [shape=circle]

  A -> B
  A -> C
  A -> D

}

Color

digraph DG {

  A [shape=diamond, color=green]
  B [shape=box]
  C [color=red]

  A -> B
  A -> C [color=blue]
  A -> D [color="brown:invis:brown"]

}

style, penwidth, arrowhead

digraph D {

  A [shape=diamond]
  B [shape=box]
  C [shape=circle]

  A -> B [style=dashed, color=grey]
  A -> C [color="black:invis:black"]
  A -> D [penwidth=5, arrowhead=none]

}

Aligned text

digraph DG {

  node [shape=record fontname=Arial];

  a  [label="one\ltwo three\lfour five six seven\l"]
  b  [label="one\ntwo three\nfour five six seven"]
  c  [label="one\rtwo three\rfour five six seven\r"]

  a -> b -> c

}

Graph title (label)

digraph DG {

  label = "The foo, the bar and the baz";
  labelloc = "t"; // place the label at the top (b seems to be default)

  node [shape=plaintext]

  FOO -> {BAR, BAZ};

}

HTML label

digraph DG {
  label = <The <font color='red'><b>foo</b></font>, the <font point-size='20'>bar</font>  and<br/> the <i>baz</i>>;
  labelloc = "t"; // place the label at the top (b seems to be default)

  node [shape=plaintext]

  FOO -> {BAR, BAZ};
}

Subgraph

digraph DG {
  A -> {B, C, D} -> {F}

  subgraph cluster_R { 
    rank=same B C D
  }
}

Python 3.8 วาดกราฟด้วย Graphviz

ติดตั้ง graphviz บน Ubuntu

sudo apt install graphviz

ติดตั้ง graphviz บน Windows เปิด cmd ด้วยสิทธิ administrator

choco install graphviz

dependency-graph

ติดตั้งไพธอนไลบรารี graphviz-0.19

python3.8 -m pip install graphviz

ที่บรรทัดแรกของไฟล์ dependency_graph.py เพิ่ม

#!/usr/bin/python3.8

ทำให้ไฟล์ dependency_graph.py รันได้

chmod 755 dependency_graph.py

หาตัวอย่าง source code ภาษา c (GitHub – pvigier/ecs: A simple and easy to use entity-component-system C++ library) มาไว้ใน folder src แล้วทดลองรัน

./dependency_graph.py src/ out -f png

จะได้ไฟล์ภาพ out.png

usage: dependency_graph.py [-h] [-f {bmp,gif,jpg,png,pdf,svg}] [-v] [-c]
                           folder output

positional arguments:
  folder                Path to the folder to scan
  output                Path of the output file without the extension

optional arguments:
  -h, --help            show this help message and exit
  -f {bmp,gif,jpg,png,pdf,svg}, --format {bmp,gif,jpg,png,pdf,svg}
                        Format of the output
  -v, --view            View the graph
  -c, --cluster         Create a cluster for each subfolder

แต่ถ้ารันแล้วได้ error

'dot' is not recognized as an internal or external command

แสดงว่ายังติดตั้ง graphviz ไม่สำเร็จ หรือ หา path ไม่เจอ Graphviz’s dot tool on Windows

pydeps

ติดตั้ง pydeps

python -m pip install pydeps

ตัวอย่างการเรียกใช้

pydeps pydeps
pydeps pydeps --rankdir TB
pydeps pydeps --rankdir BT

ให้ output เป็นไฟล์ png

pydeps -T png pydeps

ติดตั้ง Graphviz บน Ubuntu 18.04

ติดตั้ง Graphviz

sudo apt install graphviz
sudo yum install graphviz

ดูเวอร์ชันที่ติดตั้ง

$ dot -V
dot - graphviz version 2.40.1 (20161225.0304)

ทดลองใช้งานทาง Command Line

echo 'digraph { a -> b }' | dot -Tsvg > output.svg
echo 'digraph { a -> b }' | dot -Tsvg -o output.svg

ใส่ข้อความและกำหนดสีของข้อความ (set a graph attribute -Gname[=value])

echo 'digraph { a -> b }' | dot -Tsvg -Gfontcolor=red -Glabel="My favorite letters" > output2.svg

กำหนดรูปแบบของโหนด (set a default node attribute -Nname[=value] )

echo 'digraph { a -> b }' | dot -Tsvg -Nfontcolor=red -Nshape=rect > output3.svg

กำหนดรูปแบบของ edge และลูกศร (set a default edge attribute -Ename[=value])

บันทึกไฟล์ output เป็น png หรือฟอร์แมตอื่นๆดู supported formats

echo 'digraph { a -> b }' | dot -Tpng -Ecolor=red -Earrowhead=diamond > output4.png