Graphviz, cambiando el tamaño del borde

92

¿Cómo cambiar el tamaño del borde en punto (graphviz)? Me gustaría hacer algunos bordes "en negrita".

nombre
fuente

Respuestas:

134

Quería complementar la respuesta de shuvalov. penwidth es de hecho el comando correcto. Además, en la respuesta de shuvalov, penwidth es una propiedad tanto de nodo como de borde, también correcta.

La distinción que quería hacer:

  • penwidth , cuando se utiliza como una propiedad de nodo (por ejemplo, "NodeA" [penwidth = 5]) afecta el grosor de la línea de borde para ese nodo

  • grosorpluma , cuando se utiliza como una propiedad borde afecta el peso de la línea del borde (valor por defecto es "1", que especifica grosorpluma = 2 hará que el borde aparece en negrita tipo

  • si desea cambiar el grosor de la línea de un borde, no necesita cambiar el ancho del lápiz para los dos nodos conectados por ese borde (como podría sugerir la respuesta de shuvalev)

  • para un gráfico dirigido (los bordes tienen una dirección), es posible que también desee cambiar el tamaño / peso de la punta de flecha y la cola de flecha , junto con el peso del borde , para que los tres sigan siendo proporcionales

  • la longitud de un borde se puede cambiar estableciendo la propiedad de peso , como en otros lugares, el valor predeterminado es 1.0; aumentar ese valor aumenta el costo de estirar este borde durante el renderizado (es decir, el algoritmo de dibujo aplica una penalización más alta a las soluciones en las que este borde es más largo); observe que el borde de 1 a 4 es más corto que el borde de 1 a 2.

El siguiente código debería ilustrar todo esto. El gráfico renderizado se muestra debajo del 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.]
}

ingrese la descripción de la imagen aquí

doug
fuente
Por alguna razón, la weightpropiedad no cambia nada para mí. El resto es muy útil, aunque… ¡gracias!
clozach
Esto fue muy útil, en particular con la imagen, me ayudó a comprender la relación aquí. La sintaxis de graphviz es un poco peculiar, por lo que estas bonitas imágenes realmente ayudaron mucho. La única parte, si cambiara lo anterior, sería agregar un poco más de explicación con respecto al ancho del lápiz, porque ahora mismo las líneas están en negrita (cambié eso, gracias a lo anterior), pero el borde alrededor los nodos individuales no son más gruesos, lo que inicialmente quería hacer. Es posible que eventualmente pueda resolver este problema, pero en el caso de que me olvide de publicar la solución aquí, simplemente agrego esto. :)
shevy
20

prueba esto:

"NodeA" [ penwidth = 5]
"NodeB" [ penwidth = 5]
NodeA->NodeB [ penwidth = 3]
shuvalov
fuente