Graphviz‎ > ‎

Graphviz : Aplikasi dot

Seperti dijelaskan secara singkat sebelumnya, aplikasi dot merupakan bagian dari Graphviz yang digunakan untuk menghasilkan visualisasi dalam bentuk graph berarah (directed graph). 

Aplikasi ini akan menerjemahkan bahasa DOT yang mendefinisikan hubungan berbagai komponen pada directed graph seperti node, edge, bentuk node, warna, dan sebagainya.

Section ini tidak akan memberikan banyak teori tapi lebih diperkaya dengan contoh penggunaan dot beserta hasil gambar yang dihasilkan. 

Diharapkan dengan "learning by doing", maka dapat menjadi penyemangat sebelum kembali ke konsep maupun teori dari Graphviz yang akan memperkuat kompetensi dan keahlian kita dalam menggunakan Graphviz ini.

Posting Terbaru

  • 04. Merubah Edge - Relasi One to Many PendahuluanPada artikel sebelumnya mengenai Penggunaan Style HTML pada Record, telah ditunjukkan relasi antar port / kolom dengan penggambaran suatu edge.Jika kita ingin memperjelas hubungan tersebut dalam konteks relational database ...
    Posted Oct 4, 2011, 8:19 AM by Editor KursusInternet
  • 03. Menggunakan Style HTML pada Record Pendahuluan Pada artikel sebelumnya, kita telah mengetahui bagaimana menggambarkan relasi antar sel pada node berbentuk record. Untuk lebih memperkaya visualisasi, maka Graphviz mengenali elemen tag pembentuk table pada HTML untuk ...
    Posted Oct 2, 2011, 1:48 AM by Editor KursusInternet
  • 02. Menggunakan Bentuk Record Pendahuluan Salah satu bentuk node untuk graph yang paling sering digunakan adalah penggunaan record untuk mendokumentasikan relasi antar table database relasional. Pembagian "cell" pada record menggunakan label yang dipisahkan dengan ...
    Posted Sep 25, 2011, 1:23 AM by Editor KursusInternet
  • 01. Halo Indonesia ! Pendahuluan Pada contoh-contoh berikut kita akan menghasilkan graph dari Indonesia dipecah menjadi beberapa pulau dan kemudian ke beberapa propinsi saja secara hirarkis. Input akan menggunakan file-file teks yang ...
    Posted Sep 21, 2011, 6:16 AM by Editor KursusInternet
Showing posts 1 - 4 of 4. View more »

04. Merubah Edge - Relasi One to Many

posted Oct 1, 2011, 5:55 AM by Editor KursusInternet   [ updated Oct 4, 2011, 8:19 AM ]

Pendahuluan

Pada artikel sebelumnya mengenai Penggunaan Style HTML pada Record, telah ditunjukkan relasi antar port / kolom dengan penggambaran suatu edge.

Jika kita ingin memperjelas hubungan tersebut dalam konteks relational database, ada beberapa hubungan seperti "one to many" yang memiliki penggambaran edge dengan tanda panah khusus. 

Untuk melakukan hal tersebut, kita menggunakan atribut pada edge. Atribut sendiri adalah spesifikasi untuk tampilan graph, node dan edge dengan format " key = value ".

Atribut yang digunakan untuk keperluan di atas adalah "arrowhead" dengan nilai "crow" yang berbentuk seperti pada gambar berikut.

Contoh Penggunaan

onetomany.dot

digraph g {
 rankdir=LR;
 ms_cabang [shape=none, label = <
 <table cellspacing="2" cellpadding="3" border="1">
 <tr><td bgcolor="#AAAAAA;">ms_cabang</td></tr>
 <tr><td>kode_cabang</td></tr>
 <tr><td>nama_cabang</td></tr>
 <tr><td port="port0">kode_kota</td></tr>
 </table>
 >
 ];
 ms_kota [shape=none, label = <
 <table cellspacing="2" cellpadding="3" border="1">
 <tr><td bgcolor="#AAAAAA;">ms_kota</td></tr>
 <tr><td port="n">kode_kota</td></tr>
 <tr><td>nama_kota</td></tr>
 <tr><td>kode_propinsi</td></tr>
 </table>
 >
 ];
 
 ms_cabang:port0 -> ms_kota:n [arrowhead=crow];
}

Hasil Eksekusi 



03. Menggunakan Style HTML pada Record

posted Sep 25, 2011, 1:23 AM by Editor KursusInternet   [ updated Oct 2, 2011, 1:48 AM ]

Pendahuluan

Pada artikel sebelumnya, kita telah mengetahui bagaimana menggambarkan relasi antar sel pada node berbentuk record. Untuk lebih memperkaya visualisasi, maka Graphviz mengenali elemen tag pembentuk table pada HTML untuk digunakan pada Graphviz. Pengecualian untuk style CSS yang tidak dapat dikenali.

Untuk memperjelas statement di atas penulis langsung memberikan contoh file dot terkait dan hasil gambar outputnya.

Contoh Penggunaan

$ dot -Nfontname=Arial -Tpng:cairo record_html_phi_minimart.dot -o record_html_phi_minimart.png


record_html_phi_minimart.dot

digraph g {
rankdir=LR;
ms_cabang [shape=none, label = <
<table cellspacing="2" cellpadding="3" border="1">
<tr><td bgcolor="#AAAAAA;">ms_cabang</td></tr>
<tr><td>kode_cabang</td></tr>
<tr><td>nama_cabang</td></tr>
<tr><td port="port0">kode_kota</td></tr>
</table>
>
];
ms_kota [shape=none, label = <
<table cellspacing="2" cellpadding="3" border="1">
<tr><td bgcolor="#AAAAAA;">ms_kota</td></tr>
<tr><td port="n">kode_kota</td></tr>
<tr><td>nama_kota</td></tr>
<tr><td>kode_propinsi</td></tr>
</table>
>
];
ms_cabang:port0 -> ms_kota:n [arrowhead=none];
}


02. Menggunakan Bentuk Record

posted Sep 25, 2011, 12:01 AM by Editor KursusInternet   [ updated Sep 25, 2011, 1:23 AM ]

Pendahuluan

Salah satu bentuk node untuk graph yang paling sering digunakan adalah penggunaan record untuk mendokumentasikan relasi antar table database relasional. Pembagian "cell" pada record menggunakan label yang dipisahkan dengan tanpa pipe ( | ).

Berikut adalah contoh pendefinisian node berbentuk record dan pendefinisian lable-lablenya.

node0 [shape=record, label = "kode_cabang | nama_cabang | kode_kota"];

Dan contoh-contoh di bawah ini memperlihatkan penggunaan shape record ini lebih jauh.

Contoh - Penggunaan Record Dasar

Berikut adalah contoh penggunaan dot yang menampilkan bentuk 1 record saja dengan tiga kolom.

record_phi_minimart_1.dot

digraph g {
    ms_cabang [shape=record, label = "kode_cabang | nama_cabang | kode_kota"];
}

akan menghasilkan graph dengan bentuk berikut ini.


Contoh - Penggunaan Port untuk menghubungkan Record

Diagram di atas secara praktis tidak begitu berguna, kita harus mampu menggambarkan hubungan yang lebih kompleks dengan penggunaan dot ini.

Misalkan kita memiliki dua node record yaitu dengan nama ms_cabang dan ms_kota dimana relasi antara keduanya didapat dari label kode_kota. Nah, jika kita menghubungkan kedua node tersebut dengan hanya menggunakan operator edge ( -> ) maka gambar yang dihasillkan adalah sebagai berikut :


Hubungan keduanya dibuat secara otomatis dengan menggunakan titik tengah dari tiap node. Dan bukan ini yang kita inginkan, melainkan harus ada garis penghubung antara label kode_kota dari kedua node tersebut.

Agar dapat melakukan hal tersebut, kita perlu mendefinisikan suatu nama port, yaitu atribut yang mendahului definisi atribut. Format penamaan port adalah dengan menggunakan tanda kurung siku ( < nama port > ).

Sebagai contoh :

    ms_cabang [ label = "kode_cabang | nama_cabang | <port0> kode_kota "]; 

Dan kemudian kita bisa merujuk ke port tersebut dengan cara :

    ms_cabang:port0

Berikut adalah contoh file dot yang menggunakan port dan hasil gambarnya.

record_phi_minimart_2.dot

digraph g {
node [shape=record];
ms_cabang [label = "kode_cabang | nama_cabang | <port0> kode_kota "];
ms_kota [label = "<port0> kode_kota | nama_kota | kode_propinsi"];
ms_cabang:port0 -> ms_kota:port0;
}


Contoh - Penggunaan Atribut rankdir untuk Merubah Arah Orientasi Record

Diagram di atas walaupun sudah benar, terasa ada yang kurang yaitu orientasi arah node adalah atas ke bawah, sedangkan yang kita inginkan adalah kiri ke kanan.

Untuk melakukan hal tersebut sangat gampang, kita cukup menambahkan atribut rankdir=LR pada awal definisi graph tersebut.

Berikut adalah contoh file dot yang menggunakan atribut rankdir dan hasil gambarnya.

record_phi_minimart_3.dot

digraph g {
rankdir=LR;
node [shape=record];
ms_cabang [label = "kode_cabang | nama_cabang | <port0> kode_kota "];
ms_kota [label = "<port0> kode_kota | nama_kota | kode_propinsi"];
ms_cabang:port0 -> ms_kota:port0;
}



Contoh - Penggunaan Atribut pos dengan neato

Jika Anda ingin memperbaiki posisi diagram tersebut, dapat menggunakan atribut pos dan aplikasi neato dan bukannya dot. Contoh sebagai berikut.

record_phi_minimart_4.dot

digraph g {
nodesep = .05;
rankdir=LR;
node [shape=record];
ms_cabang [label = "kode_cabang | nama_cabang | <port0> kode_kota ", pos = "0,0.1!"];
ms_kota [label = "<n> kode_kota | nama_kota | kode_propinsi", pos = "2,0.1!"];
ms_cabang:port0 -> ms_kota:n;
}

dan dengan penggunaan neato sebagai berikut :

neato -Tpng:cairo -Nfontname=Arial record_phi_minimart_4.dot -o record_phi_minimart_4.png


01. Halo Indonesia !

posted Sep 21, 2011, 5:04 AM by Editor KursusInternet   [ updated Sep 21, 2011, 6:16 AM ]

Pendahuluan

Pada contoh-contoh berikut kita akan menghasilkan graph dari Indonesia dipecah menjadi beberapa pulau dan kemudian ke beberapa propinsi saja secara hirarkis.

Input akan menggunakan file-file teks yang berisi bahasa ekspresi DOT yang dapat Anda download pada bagian akhir artikel ini.

Contoh 1 : Indonesia dan 5 Pulau Besar

Dengan file input dot_indonesia_pulau.dot kita akan hasilkan gambar 1 dengan format PNG seperti di bawah ini, dengan perintah berikut :

$ dot -Tpng:cairo dot_indonesia_pulau.dot -o 5_pulau_besar.png


Gambar 1. Directed Graph Indonesia dengan 5 Pulau Besarnya

file : dot_indonesia_pulau.dot

digraph G {
Indonesia -> Sumatera;
Indonesia -> Jawa;
Indonesia -> Kalimantan;
Indonesia -> Sulawesi;
Indonesia -> "Papua bagian Barat";
}

Terlihat pada file di atas, definisi antara node dan edge (penghubung node) sangat sederhana. Node menggunakan nama / teks yang kemudian diikuti dengan tanda edge ( -> ) yang menghubungkan antar node tersebut. Selebihnya tampilan akan diinterpretasikan oleh aplikasi dot dengan konfigurasi standarnya.



Gambar 2. Command line dot pada Windows XP Professional


Contoh 2 : Indonesia, 5 Pulau Besar dan Propinsi-propinsi di Sulawesi

Contoh berikutnya adalah penggunaan file dot_indonesia_pulau_propinsi_1.dot untuk menghasilkan Gambar 3 berikut ini (klik untuk memperbesar).



Gambar 3. Hubungan Hirarkis antara Indonesia, ke 5 pulau besar dan propinsi-propinsi di Sulawesi

filename : dot_indonesia_pulau_propinsi_1.dot

digraph G {
Indonesia -> Sumatera;
Indonesia -> Jawa;
Indonesia -> Kalimantan;
Indonesia -> Sulawesi;
Indonesia -> "Papua bagian Barat";
Sulawesi -> "Sulawesi Barat";
Sulawesi -> "Sulawesi Utara";
Sulawesi -> "Sulawesi Tengah";
Sulawesi -> "Sulawesi Selatan";
Sulawesi -> "Sulawesi Tenggara";
Sulawesi -> "Gorontalo ";
}

Contoh 3 : Pewarnaan

Contoh berikutnya adalah memberi pewarnaan gambar pada contoh 2, sehingga akhirnya menghasilkan file Gambar 4 berikut (klik untuk memperbesar).
 

Gambar 4. Pulau Sulawesi dan Propinsi-propinsinya

Hanya saja kali ini, untuk menghasilkan gambar tersebut kita melakukan eksekusi command line sebagai berikut :

$ dot -Nfontname=Arial -Tpng:cairo dot_indonesia_pulau_propinsi_2.dot -o sulawesi_warna.png

file : dot_indonesia_pulau_propinsi_2.dot

digraph G {
Sulawesi -> "Sulawesi Barat" [color="blue"];
Sulawesi -> "Sulawesi Utara" [color="blue"];
Sulawesi -> "Sulawesi Tengah" [color="blue"];
Sulawesi -> "Sulawesi Selatan" [color="blue"];
Sulawesi -> "Sulawesi Tenggara" [color="blue"];
Sulawesi -> "Gorontalo " [color="blue"];
Sulawesi [shape=box,color=darkgreen,fontcolor=white,style=filled];
}

Sumber Referensi

1-4 of 4