Graphviz, cambiando la dimensione del bordo


90

Come modificare la dimensione del bordo in punto (graphviz)? Vorrei rendere alcuni bordi "in grassetto".

Risposte:


132

Volevo integrare la risposta di Shuvalov. penwidth è effettivamente il comando corretto. Inoltre, nella risposta di shuvalov la larghezza di penna è sia un nodo che una proprietà del bordo - anche corretta.

La distinzione che volevo fare:

  • penwidth , se utilizzato come proprietà del nodo (ad es. "NodeA" [penwidth = 5]) influisce sullo spessore della linea del bordo per quel nodo

  • spessorepenna , se usati come struttura bordo influisce sul peso linea del bordo (valore di default è "1", specificando spessorepenna = 2 renderà il bordo appaiono in grassetto tipo

  • se si desidera modificare lo spessore della linea di un bordo, non è necessario modificare la larghezza della penna per i due nodi collegati da quel bordo (come potrebbe suggerire la risposta di shuvalev)

  • per un grafo orientato (i bordi hanno una direzione) che potrebbe essere desiderabile modificare la dimensione / peso della freccia e arrowtail , insieme con il peso bordo , in modo che tutti e tre rimangono proporzionale

  • la lunghezza di un bordo può essere modificata impostando la proprietà weight , come altrove il valore di default è 1.0; aumentando tale valore si aumenta il costo dell'allungamento di questo bordo durante il rendering (cioè, l'algoritmo di disegno applica una penalità maggiore alle soluzioni in cui questo bordo è più lungo); notare che il bordo da 1 a 4 è più corto del bordo da 1 a 2.

Il codice seguente dovrebbe illustrare tutto ciò. Il grafico renderizzato è mostrato sotto il codice.

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.]
}

inserisci qui la descrizione dell'immagine


Per qualche motivo la weightproprietà non sta cambiando nulla per me. Il resto è super utile, però ... grazie!
clozach

Questo è stato molto utile, in particolare con l'immagine - mi ha aiutato a capire la relazione qui. La sintassi di graphviz è un po 'particolare, quindi immagini così belle hanno davvero aiutato molto. L'unica parte, se dovessi cambiare quanto sopra, sarebbe aggiungere un po 'più di una spiegazione per quanto riguarda la larghezza di penna, perché in questo momento le linee sono tutte in grassetto (l'ho cambiato, grazie a quanto sopra), ma il bordo intorno i singoli nodi non sono più spessi, cosa che inizialmente volevo fare. Potrei riuscire a risolvere questo problema alla fine, ma nel caso in cui dimentico di pubblicare la soluzione qui, aggiungo semplicemente questa. :)
Shevy

20

prova questo:

"NodeA" [ penwidth = 5]
"NodeB" [ penwidth = 5]
NodeA->NodeB [ penwidth = 3]
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.