jump to navigation

GraphViz, o LaTeX para diagramas Junho 22, 2007

Posted by drlinux in GraphViz, Gráficos.
trackback

Conheci essa semana o GraphViz(de Graph Visualization Software) , que segundo definição da wikipédia inglesa, em tradução livre é: “Um pacote de ferramentas de código aberto iniciado pela AT&T Research Labs para desenho de gráficos especificados pela linguagem de script DOT.”
Em resumo: você pode fazer um gráfico(como diagramas) usando uma linguagem de script de fácil aprendizado.

Bom, deixemos de papo e vamos pôr a mão na massa.


Instalando o GraphViz
No Ubuntu
No modo texto:
sudo apt-get install graphviz
Ou no modo gráfico você pode no “Aplicações“…”Adcionar/Remover” e instalar o aplicativo DotEdit, que é também um visualizador de .dot.
Fazendo um diagrama simples
Cada palavra(numero ou texto, exceto palavras reservadas) é interpretada como nó, e os símbolos ( — ),( -> ) são usados para ligação de cada nó, por exemplo:
graph G {
a1 -- b1
}

Gerando o Gráfico
O comando para gerar o gráfico é o dot:
dot nome_do_arquivo.dot -T

Ele irá gerar o gráfico de nome_do_arquivo.dot, por padrão a saída é stdout(a própria tela).
Para gerar para um arquivo deve-se usar o parametro -o
Exemplo, gerando o aquivo em .png:
dot ex1.dot -Tpng -oex1.ong

Resultado
ex1.dot

Gráfico Direcionados(DiGraph)
São os gráficos Hierárquicos(com seta), que são iniciados pela palavra reservada e as ligações dos nós são feitas por ( -> ), Exemplo:

digraph g {
Presidente -> Ministro_Defesa
Presidente -> Ministro_Saude
Ministro_Defesa -> Comandante_Aeronautica
Ministro_Defesa -> Comandante_Exercito
}

Resultado:
ex2.dot

Formatando e Mudando os Rótulos

Os rótulos são feitos através da flag label entre colchetes, depois do nó ou ligação que se quer rotular. A mesma coisa acontece para as flags de formatação(como color, shape, style, etc), por exemplo:
digraph g {
pessoa1 [label="João Sem Dono", shape=box, style=filled, color=blue, height=0.5] ;
pessoa2 [label="Maria Preá", style=filled, color=pink];
pessoa1 -> pessoa2 [label="Gosta de"]
}

ext3.png

Fazendo Subgraphs
Sub-gráficos servem para categorizar certos nós, colocando-os unidos em uma “caixa”.
Exemplo:
digraph G {
label="Sistemas de informação - UFS";
node [style=filled,color=grey, shape=box];
ranksep=3;
ratio=auto;
subgraph cluster_0 {
style=filled;
color=lightgrey;
105131 [label="Cálculo I"];
105177 [label="Fund. de Álgebra para Computação "];
301011 [label="Introdução à Administração"];
103203 [label="Fundamentos da Computação"];
103204 [label="Programação I"];
label="PRIMEIRO PERIODO";
}
subgraph cluster_1 {
105134 [label="Vetores e Geometria Analítica"];
105151 [label="Fundamentos de Matemática"];
404102 [label="Inglês Instrumental I"];
103205 [label="Programação II"];
103238 [label="Org. e Arquitetura de Computadores"];
301083 [label="Org., Mét. e Sist. Administrativos"];
label="SEGUNDO PERIODO";
color=black
}
103204 -> 103205;
103204 -> 103238;
103203 -> 103238;
301011 -> 301083;
subgraph cluster_2 {
style=filled;
color=lightgrey;
label="TERCEIRO PERÍODO"
103116 [label="Probabilidade e Estatística"];
103328 [label="Teoria Geral dos Sistemas "];
407083 [label="Introdução à Metodologia Científica"];
103263 [label="Teoria da Computação"];
301114 [label="Sociologia das Organizações"];
103214 [label=" Est. de Dados p/ Sis. de Informação I"];
}
301083 ->103328
103205->103263
105151->103263
301011-> 301114
103205 -> 103214
subgraph cluster_3 {
color=black;
label="QUARTO PERÍODO"
103343 [label="Computador Ética e Sociedade"];
103209 [label="Lin. de Prog. p/ Sis. de Informação"];
103215 [label="Es. de Dados p/ Sis. de Informação II"];
103327 [label="Gestão da Informação"];
}
103214 -> 103209;
103214 -> 103215;
103263 -> 103215;
103328 -> 103327;
subgraph cluster_4 {
style=filled;
color=lightgrey;
label="QUINTO PERÍODO";
103264 [label="Linguagem Formais e Tradutores "];
103285 [label="Engenharia de Software I "];
103271 [label="Banco de Dados "];
301111 [label="Iniciação Empresarial"];
103249 [label="Sis. Operac.. p/ Sis. de Informação "];
}
103214 -> 103264;
103263 -> 103264;
103215 -> 103285;
103215 -> 103271;
301083 -> 301111;
103238 -> 103249;
103215 -> 103249;
subgraph cluster_5 {
color=black;
label="SEXTO PERÍODO";
103286 [label="Engenharia de Software II "];
103301 [label="Inteligência Artificial"];
103251 [label="Redes de Computadores "];
103329 [label="Sistemas de Informação"];
}
103285 -> 103286;
103271 -> 103286;
103328 -> 103301;
103209 -> 103301;
103209 -> 103251;
103263 -> 103251;
103285 -> 103329;
103327 -> 103329;
subgraph cluster_6 {
style=filled;
color=lightgrey;
label="SÉTIMO PERÍODO";
103288 [label="Qualidade de Software I "];
103381 [label="Auditoria e Segurança de Sistemas "];
103257 [label="Segurança e Gerência de Rede "];
103292 [label="Interface Homem-Máquina"];
103242 [label="Sistemas Distribuídos"];
}
103285 -> 103288;
103286 -> 103381;
103251 -> 103257;
103285 -> 103292;
103251-> 103242;
subgraph cluster_7 {
color=black;
label="OITAVO PERÍODO";
103287 [label="Gerência de Projetos"];
103372 [label="Est. Sup. em Sistemas de Informação"];
103362 [label="Trabalho de Conclusão de Curso I "];
}
103288 -> 103287;
103286 -> 103372;
103288 -> 103362;
subgraph cluster_8 {
style=filled;
color=lightgrey;
label="NONO PERÍODO";
103322 [label="Sistemas de Apoio à Decisão"];
103363 [label="Trabalho de Conclusão de Curso II"];
}
103328->103322;
103288->103363;
}

Diagrama do curdo de Sistemas de Informação da UFS

Outros Links sobre o GraphViz:

Site Oficial- Onde pode-se encontrar a documentação completa

Tutorial de GraphViz Dot em Linux Dev Center

Comentários»

1. battisti - Fevereiro 4, 2008

Realmente é uma ferramenta muito interessante, valeu pela dica

2. battisti - Fevereiro 5, 2008

não achei em nenhum repositório este tal de dotEdit, pode postar aqui por favor onde você achou ele.

3. drlinux - Fevereiro 15, 2008

ele tinha no repositório do do ubuntu

4. DOT - Uma linguagem para criar gráficos « Anselmo - Fevereiro 19, 2008

[...] DOT – Uma linguagem para criar gráficos 19Fev08 Vou começar com dois links, leiam eles e você não precisam ler o resto deste post Página em português sobre o assunto, foi ali que eu descobri esta tal de DOT [...]

5. battisti - Fevereiro 25, 2008

rapaz esse wordpress é muito louco coloquei uma referência do seu post em um post no meu blog e o próprio wordpress veio e colocou este comentário, CARAMBA É QUASE UMA ENTIDADE!