[英]Draw splines with neato instead of straight lines
我正在使用 python 程序繪制數據流圖:
g.render('output/data.gv', view=True)
由於我需要在特定位置對齊節點,因此我決定使用neato
作為引擎:
g = Digraph(engine='neato')
然而,由於neato
默認情況下繪制直線而不是樣條曲線(如dot
那樣),這使得圖形看起來有點混亂(見下文)。 那么有沒有辦法通過python代碼配置讓它繪制樣條曲線呢?
示例(文件data.gv
):
digraph {
nop1 [label=nop1 pos="0,6!"]
o1 [label="o1
ALU" height=0.75 pos="0,5!"]
nop1 -> o1
o2 [label="o2
MUL" height=1.75 pos="1,4.5!"]
nop1 -> o2
o3 [label="o3
MUL" height=1.75 pos="2,4.5!"]
nop1 -> o3
o4 [label="o4
MUL" height=1.75 pos="3,4.5!"]
nop1 -> o4
o7 [label="o7
ALU" height=0.75 pos="4,5!"]
nop1 -> o7
o5 [label="o5
MUL" height=1.75 pos="0,2.5!"]
o3 -> o5
o4 -> o5
o6 [label="o6
ALU" height=0.75 pos="1,3!"]
o4 -> o6
o8 [label="o8
ALU" height=0.75 pos="0,1!"]
o3 -> o8
o5 -> o8
nop2 [label="nop2
NOP" height=-0.25 pos="0,0!"]
o1 -> nop2
o2 -> nop2
o6 -> nop2
o7 -> nop2
o8 -> nop2
}
根據 Marichyasana 的評論,將 graph_attr 設置為包含-splines=true -sep=1
。
from graphviz import Graph
# A simple demonstration graph
g = Graph(name="we", engine='neato')
g.node('1', pos='1,1!', shape='circle')
g.node('2', pos='2,1!', shape='circle')
g.node('3', pos='3,1!', shape='circle')
g.edge('1', '2')
g.edge('2', '3')
g.edge('1', '3')
# The solution
g.graph_attr['splines'] = 'true'
g.graph_attr['sep'] = '1'
g.format = 'jpg'
g.render('test', view=False)
沒有分配給 graph_attr 的更改(我沒有足夠的聲譽來發布圖像):
固定的:
增加間隔 ( 'sep'
) 是可選的,它將使線遠離其他節點的中心。 值太大時樣條線將不會用於邊緣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.