Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Graphviz - Primeiros passos

Graphviz - Primeiros passos

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.

Ícaro Jerry

April 20, 2016
Tweet

More Decks by Ícaro Jerry

Other Decks in Technology

Transcript

  1. • Um projeto Open Source; • Uma ferramenta poderosa, simples

    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
  2. • Na Interfaces gráficas; • Bindings para diversas linguagens; •

    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
  3. • dot - "hierárquica" ou desenhos de grafos dirigidos em

    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
  4. • sfdp - versão multiscale do fdp para o layout

    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
  5. • Vamos criar nosso primeiro grafo a partir de um

    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
  6. Praticando graph{ a -- {b, c, d}; b -- {c,

    e}; } digraph{ a -> b; b -> a; b -> c; c -> b; } # Ligando Múltiplos vértices: # Grafo direcionado: Obs: a direção deve ser sempre "->";
  7. Praticando # Criando subgrafos: graph{ subgraph cluster_A{ a -- b;

    } 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.
  8. Atributos A ferramenta possibilita indicar valores para atributos dos elementos

    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
  9. Atributos label: Adiciona um rótulo para o Grafo em si.

    # Graph Attributes digraph{ label="Meu Gráfico"; x->y; y->z; }
  10. Atributos A ferramenta desenha por padrão o grafo de cima

    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; }
  11. Atributos Para agrupar os nós em um mesmo nível do

    grafo, coloque o atributo: {rank=same; n1, n2, n3 } # Graph Attributes digraph{ {rank=same; z, x} x->y; y->z; }
  12. Atributos Apenas só se pode colorir o “cluster” de um

    subgrafo. Para isso, basta colocar os atributos: [style="filled";fillcolor="#F7F8E6"] Obs: O valor #F7F8E6 representa uma cor em hexadecimal. # Graph Attributes digraph G{ subgraph cluster_G { [style="filled"; fillcolor="#F7F8E6"] x; } subgraph cluster_D { [style="filled"; fillcolor="#F7FFFF"] y; } x->y; }
  13. Atributos # Vertex Attributes graph { a [label="N1"]; b [label="N2"];

    a -- b; } label: Adiciona um rótulo a um determinado vértice. Para isso o atributo abaixo deve estar após a declaração do vértice.
  14. Atributos # Vertex Attributes graph { a [color="red"]; b [color="blue"];

    a -- b; } Para colorir as bordas dos vértices basta adicionar o atributo: [color="red"]
  15. Atributos # Vertex Attributes graph { a [style=filled; fillcolor="#EBEFC9"]; b

    [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"]
  16. Atributos # Edges Attributes label: Adiciona um rótulo a uma

    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"]; }
  17. Atributos # Edges Attributes Para colorir uma aresta basta adicionar

    o atributo na linha em que é feita a intercessão: [color="red"] graph { a -- b[color="red"]; }
  18. Atributos # Edges Attributes penwidth : Altera a espessura da

    aresta. style=dashed : Coloca o estilo "pontilhado" na aresta. graph { a -- b [penwidth=3.0]; c -- d [style=dashed] }