Graphviz, alterando o tamanho da borda


90

Como alterar o tamanho da borda em ponto (graphviz)? Eu gostaria de deixar algumas arestas em "negrito".

Respostas:


132

Eu queria complementar a resposta de shuvalov. penwidth é de fato o comando correto. Além disso, na resposta de shuvalov, a largura de caneta é tanto um nó quanto uma propriedade de borda - também correto.

A distinção que eu queria fazer:

  • penwidth , quando usado como uma propriedade do nó (por exemplo, "NodeA" [penwidth = 5]) afeta a espessura da linha de fronteira para esse nó

  • penwidth , quando usado como uma propriedade borda afeta a espessura da linha da borda (valor padrão é "1", especificando penwidth = 2 fará a borda aparecem em negrito tipo

  • se você quiser mudar a espessura da linha de uma aresta, você não precisa mudar a largura da caneta para os dois nós conectados por essa aresta (como a resposta de shuvalev pode sugerir)

  • para um grafo direcionado (as arestas têm uma direção), você também pode querer mudar o tamanho / peso da ponta de seta e arrowtail , juntamente com o peso borda , de modo que todos os três permanecem proporcional

  • o comprimento de uma aresta pode ser alterado configurando a propriedade de peso , como em qualquer outro lugar, o valor padrão é 1,0; aumentar esse valor aumenta o custo de esticar essa aresta durante a renderização (ou seja, o algoritmo de desenho aplica uma penalidade maior para soluções em que essa aresta é mais longa); observe que a borda de 1 a 4 é mais curta do que a borda de 1 a 2.

O código a seguir deve ilustrar tudo isso. O gráfico renderizado é mostrado abaixo do código.

digraph {
    /* declare the node & style them */
    "Node 1" [shape=diamond, penwidth=3, style=filled, fillcolor="#FCD975"];
    "Node 2" [style=filled,fillcolor="#9ACEEB" ];
    "Node 3" [shape=diamond, style=filled, fillcolor="#FCD975" ];
    "Node 4" [style=filled, fillcolor="#9ACEEB" ]

    /* declare the edges & style them */
    "Node 1" -> "Node 2" [dir=none, weight=1, penwidth=3] ;
    "Node 1" -> "Node 3" [dir=none, color="#9ACEEB"] ;
    "Node 1" -> "Node 4" [arrowsize=.5, weight=2.]
}

insira a descrição da imagem aqui


Por algum motivo, a weightpropriedade não está mudando nada para mim. O resto é super útil, porém ... obrigado!
clozach

Isso foi muito útil, em particular com a imagem - me ajudou a entender a relação aqui. A sintaxe do graphviz é um pouco peculiar, então essas belas imagens realmente ajudaram muito. A única parte, se eu mudasse acima, seria adicionar um pouco mais de explicação em relação à largura da caneta, porque agora as linhas estão todas em negrito (eu mudei isso, graças ao acima), mas a borda ao redor os nós individuais não são mais grossos, o que eu inicialmente queria fazer. Talvez eu consiga resolver esse problema um dia, mas caso me esqueça de publicar a solução aqui, simplesmente adiciono. :)
shevy

20

tente isto:

"NodeA" [ penwidth = 5]
"NodeB" [ penwidth = 5]
NodeA->NodeB [ penwidth = 3]
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.