簡體   English   中英

在 graphviz python 中強制箭頭從左側進入節點

[英]Force an arrow to enter a node from the left in graphviz python

我正在嘗試制作一個漂亮的圖表(見圖),但有一定的要求。 當前圖 看起來像半矩形的節點稱為注釋,箭頭應該從左側而不是底部進入節點。 有誰知道如何在 graphviz python 中執行此操作。

關於代碼的一些評論: model object 包含邊緣對象。 每條邊 object 包含一個源節點和一個目標節點,它們基本上是字符串對象。

我還保留了一個節點列表,這些節點應該具有我使用該形狀的稱為注釋的半矩形形狀。 總之,我唯一想要的就是讓傳入的邊緣向左移動。

確切的代碼可以在下面找到:

g = Digraph('G', filename='./output/model_' + str(mi),     format='png',strict=True)
g.graph_attr.update(rankdir='BT')
g.attr('node',shape='note')
sources= list()
targets = list()
annotations=list()
PossibleModel.MAX_DEPTH = 3

"""Let us first see what the possible inputs are"""
"""  
for edge in model.get_edges():
    sources.append(str(edge.source))
    targets.append(str(edge.target))
"""  
for edge in model.get_edges():
    sources.append(edge.source.small_string2())
    targets.append(edge.target.small_string2())
  
difference = list(set(sources) - set(targets))
print('difference',difference)



for edge in model.get_edges():
    edge_contained = ''
    for rule in br_rules:
        if str(edge.source) in rule or str(edge.target) in rule:
            edge_contained += rule + '\n'
    if edge_contained == '':
        g.edge(edge.source.small_string2(), edge.target.small_string2(),label=str(edge.weight),color='red')
        g.edge(edge.source.small_string2(), edge.source.small_string3(),color='black',arrowhead='none',style='dashed')
        g.edge(edge.target.small_string2(), edge.target.small_string3(),color='black',arrowhead='none',style='dashed')
        annotations.append(edge.source.small_string3())
        annotations.append(edge.target.small_string3())
    else:
        g.attr('edge', color='blue')
        g.edge(str(edge.source), str(edge.target), label=edge_contained)

for node in difference:
    g.node(node,style='rounded',shape='ellipse')

for node in targets:
    g.node(node, shape='box')
    
for node in annotations:
    g.node(node,color='transparent', image='test.png',fontsize='11')`

使用“端口”(參見第 18 頁“節點端口” http://www.graphviz.org/pdf/dotguide.pdfhttps://graphviz.org/docs/attr-types/portPos/
所以而不是a -> b試試a -> b:w:w表示西邊左邊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM