อยากจะเขียน diagram ง่ายๆ ขึ้นมาสักอัน แต่ไม่มีโปรแกรมจำพวก visio, photoshop จะทำยังไงดี นึกขึ้นได้เขียน diagram ด้วยภาษา dot ดีกว่า
dot language เป็นภาษาที่ใช้ในการเขียนกราฟให้เข้าใจแบบง่ายๆ วิธีการเขียนก็จะเขียนเป็น code หลังจากนั้นโปรแกรม render code ให้ออกมาเป็นรูปภาพ, pdf, SVG
ตัวอย่างผมต้องการเขียนรูปแบบนี้
จะต้องเขียน code ในลักษณะนี้
[ruby]
digraph graphname {
graph [nodesep=0.5, fontname="DejaVu Sans", rankdir=TB,splines=line;]
labeljust=right;
subgraph cluster_0{
"A"; "B"; "C";
label = "Master";
color=blue;
rankdir=LR;
{rank=same; A; B;C}
}
subgraph cluster_1{
"D"; "E"; "F";
label = "Slave";
color=red;
rankdir=LR;
{rank=same; E; F; D}
}
A->B[dir=both]
B->C[dir=both]
A->D;
B->E;
C->F;
}
[/ruby]
อธิบายได้ดังนี้
[html]
graph [nodesep=0.5, fontname="DejaVu Sans", rankdir=TB,splines=line;]
labeljust=right;[/html]
กำหนด attribute ของ graph คือ
– ให้แต่ละ node มีความห่าง 0.5
– ใช้ font “DejaVu Sans”
– มีการเรียงลำดับจาก Top to Bottom
– ลักษณะการโยงเส้นให้เป็นเส้นตรง
– ตำแหน่งตัวหนังสือของ label ให้ชิดที่ขอบขวา
[html]
subgraph cluster_0{
"A"; "B"; "C";
label = "Master";
color=blue;
rankdir=LR;
{rank=same; A; B;C}
}
[/html]
สร้าง sub graph มีรูปแบบเป็น cluster คือจะมีกรอบล้อมรอบ
– มี node member ชื่อ A, B และ C
– มีชื่อ label ของกรอบว่า Master
– มีสีน้ำเงิน
– มีการจัดเรียงแบบ Left to Right
– ให้ทุก node อยู่ตำแหน่งเดียวกัน
[html]
A->B[dir=both]
A->D;
[/html]
A->B[dir=both] คือให้ลากเส้นจาก A ไปหา B โดยมีหัวลูกศรอยู่ทั้งสองทาง
A->D คือลากเส้นจาก A ไปหา D
ถ้าใครสนใจลองเอา code ไปเขียนที่เวปนี้ได้ครับ http://sandbox.kidstrythisathome.com/erdos/
หรือถ้าใครใช้ linux อยู่ ให้ติดตั้งโปรแกรม graphviz ก็ได้ แล้ว render file แบบนี้ครับ
[shell]
$ dot -Tpng file.dot > file.png
[/shell]
ก้จะได้รูปภาพออกมาเช่นเดียวกันครับ