2016-08-19 5 views
0

Ich habe Datenrahmen und ich bauen Graph graphvizGraphviz: geben Farbe Linien mit Regenbogen-Effekt

for id_key, group in df.groupby('ID'): 
f = Digraph('finite_state_machine', filename='fsm.gv', encoding='utf-8') 
f.body.extend(['rankdir=LR', 'size="5,5"']) 
f.attr('node', shape='box') 
for i in range(len(group)-1): 
    f.edge(str(group['category'].iloc[i]), str(group['category'].iloc[i+1]), 
      label=str(group['search_term'].iloc[i+1])) 
f.render(filename=str(id_key)) 

mit und erhalten dieses Ergebnis image. Wie kann ich die Linienfarbe ändern: erster Pfeil - rot, zweiter - orange, dritter - gelb, usw.?

Antwort

2

Sie können einen der brewer color schemes verwenden. Zum Beispiel:

g = graphviz.Digraph(format='png') 
g.body.extend(["rankdir=LR"]) 
for i in range(9): 
    g.edge(str(i),str(i+1),color="/spectral9/"+str(i+1)) 
g.render(filename="example") 

produzieren:

example

Wenn Sie die Farben erzeugen, wollen sie können Sie die hsv format mit Konstanten Sättigung & Wert und zunehmende Verwendung Farbton:

n = 20 
g = graphviz.Digraph(format='png') 
g.body.extend(["layout=circo"]) 
for i in range(n): 
    g.edge(str(i),str(i+1),color="{h:} 1 1".format(h=i/n)) 
g.edge(str(n),str(0),color="1 1 1") 
g.render(filename="example") 

produzieren:

example2

+0

wenn ich ILoc verwenden, wie kann ich das umschreiben? – ldevyataykina

+0

Ich bekomme diese 'Warnung:/spectral9/11 ist keine bekannte Farbe.' – ldevyataykina

+0

und es ist für alle – ldevyataykina