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
![]()
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:
![]()
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"]
}
![]()
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
Realmente é uma ferramenta muito interessante, valeu pela dica
não achei em nenhum repositório este tal de dotEdit, pode postar aqui por favor onde você achou ele.
ele tinha no repositório do do ubuntu
[...] 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 [...]
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!