2012-01-25 13 views
9

Czy istnieje sposób na dodanie koloru tylko do pola w węźle opartym na rekordach. Jak w poniższym przykładzie, czy pole struct2: f0 może być w innym kolorze?Graphviz: Kolor tylko pole w węźle opartym na rekordach

digraph structs { 
node [shape=record]; 
struct1 [label="<f0> left|<f1> mid\ dle|<f2> right"]; 
struct2 [label="<f0> one|<f1> two"]; 
struct3 [label="hello\nworld |{ b |{c|<here> d|e}| f}| g | h"]; 
struct1:f1 -> struct2:f0; 
struct1:f2 -> struct3:here; 
} 

Thx

Odpowiedz

9

Nie sądzę, jest to możliwe.

Można rozważyć użycie HTML-like labels - powinieneś być w stanie zrobić wszystko, co można zrobić z węzłami płytowych oparte, i wiele innych.

Z powyższej dokumentacji związanej strony:

Kształt rekord oparte w dużej mierze zostały zastąpione i znacznie uogólnione przez HTML, takich jak etykiety. Oznacza to, że zamiast używać shape=record, można rozważyć użycie shape=none i etykiety podobnej do HTML-a o nazwie HTML-.

i

Chociaż etykiety HTML nie są, ściśle mówiąc, kształt, mogą być postrzegane jako uogólnienie kształtów płytowych opisanych powyżej. W szczególności, jeśli węzeł ustawił atrybut kształtu na none lub plaintext, etykieta HTML będzie kształtem węzła.

+2

Wadą tego podejścia jest to, że jest to 90-tych-era HTML z tagów i atrybutów czcionek tabeli. Drugą wadą jest to, że musisz zafundować colspan/rowspan, aby dystrybuować swoje komórki rekordów. Ale nie sądzę, że istnieje alternatywa :-( –

+1

Tak, to kod HTML z lat 90-tych, a nasza odruchowa reakcja polega na pogardzaniu nim, ale jest to inny cel, w tym celu jest to nowoczesny Graphviz. – SSteve

4

Spróbuj tego:

digraph G { 
    "Record" [ label=<<table> 
          <tr> 
           <td>A</td> 
           <td bgcolor='#00CC11'>B</td> 
          </tr> 
         </table> 
         > 
      ]; 
    } 
Powiązane problemy