O Graphviz é um software livre para desenhar gráficos especificados em scripts de linguagem DOT.
Apresentação feita como parte da Avaliação na Disciplina de Teoria dos Grafos, IFBA, Salvador.
e intuitiva para construção de grafos; • Possui diversas recursos que potencializa a construção dos grafos; • Diversas outras ferramentas utilizam essa ferramenta como base; • Construção de grafos através de scripts; • Atualmente está disponível para as plataformas: Linux, Windows e Mac. O Graphviz
Geradores e Tradutores; • Ferramentas de Engenharias, IA; • Muitos outros. O Graphviz Na seção Resources do site oficial* do Graphviz é apresentada uma lista de diversos Softwares que utilizam ou estendem as funcionalidades da ferramenta *http://graphviz.org/content/resources
camadas. É a ferramenta padrão para usar se o grafo é direcionado; • neato - "spring model". Esta é a ferramenta padrão para usar caso você não conheça as propriedades dele e não seja muito grande (cerca de 100 nós); • fdp - também é um "spring model". Possui esquemas semelhantes aos da neato, mas faz isso através da redução das forças, em vez de trabalhar com a energia; Eles se diferem no modo em que são implementados, ou seja, algoritmos diferentes. Fundamentos # Ferramentas de Layouts
de grafos grandes; • twopi - layout radial. Os nós são colocados em círculos concêntricos, dependendo a sua distância a partir de um determinado nó raiz; • circo - layout circular, após seis e Tollis 99, Kauffman e Wiese 02. Isso é adequado para certos diagramas de várias estruturas cíclicas, tais como certas redes de telecomunicações. Fundamentos # Ferramentas de Layouts
código simples, o famoso "Hello World"! • Basta criar um arquivo com com o seguinte trecho: Praticando # “Hello World” graph{ hello -- world; } • Para desenhar o grafo* basta executar seguinte comando: $dot arquivo-script.dot -Tpng -o imagem-final.png * Ou utilize alguma ferramenta online, por exemplo: http://graphs.grevian.org/graph
} subgraph cluster_B{ c -- d; } } graph{ subgraph A{ a -- b; } subgraph B{ c -- d; } } Para criar um subgrafo basta criar um elemento subgraph. Para que o subgrafo esteja destacado por uma área visual deve ter o prefixo “cluster_” no identificador. Caso contrário existiram os subgrafos, mas não serão identificados visualmente.
do grafo (O próprio grafo e seus subgrafos, seus vértices e suas arestas. Os atributos são divididos nas seguintes classes: • Graph Attributes • Vertex Attributes • Edge Attributes
para baixo (Top -> Bottom). Para indicar que o grafo seja desenhado da esquerda para direita coloque o atributo: rankdir=LR; # Graph Attributes digraph{ rankdir=LR; x->y; y->z; }
[style=filled; fillcolor="#AAB3AB"]; a -- b; } Caso deseje preencher o vértice com alguma cor, basta colocar os atributos abaixo após a declaração do vértice: [style=filled; fillcolor="red"]
determinado aresta. weight: Adiciona um peso à aresta. Este não é visível um atributo visível, porém tem influencia nos algoritmos utilizados no layout, por exemplo. Obs: Os atributos devem ser colocados após a definição da aresta. graph { a -- b [label="e1"]; b -- c [weight= 0.5]; c -- a [weight = 0.5; label = "0.5"]; }