Graphviz:为具有彩虹效果的线条赋予颜色

lde*_*ina 2 python graphviz pandas

我有数据框,我使用 graphviz

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))
Run Code Online (Sandbox Code Playgroud)

并得到这个结果 图片. 如何更改线条颜色:第一个箭头 - 红色,第二个 - 橙色,第三个 - 黄色等?

Oha*_*tan 6

您可以使用其中一种brewer 配色方案。例如:

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")
Run Code Online (Sandbox Code Playgroud)

生产:

例子

如果您希望自己生成颜色,您可以使用具有常量饱和度并增加色调hsv 格式

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")
Run Code Online (Sandbox Code Playgroud)

生产:

例子2