graphviz,pythonでdot言語のrank,sameの方法を教えて下さい。
①FとGが横並びになる方法を教えて下さい。
GVファイル(graph description language)にrankがでてきません
②スモールsをつけない方法を教えて下さい。
sをつけないと、絵が重なります。
上向き矢印↑を作ってみました。目標は、graphviz,pythonでトーナメント表(tournament)作成です。よろしくお願いします。
def apply_styles(graph, styles):
graph.graph_attr.update(
('graph' in styles and styles['graph']) or {}
)
graph.node_attr.update(
('nodes' in styles and styles['nodes']) or {}
)
graph.edge_attr.update(
('edges' in styles and styles['edges']) or {}
)
return graph
from graphviz import Digraph
g = Digraph('G', filename='cluster.gv')
with g.subgraph(name='cluster_1') as c:
c.edges([('1', 'A'), ('1', 'B'),
('2', 'C'), ('2', 'D'),
('3', 'E'), ('3', 'F'),
('6', '4'), ('6', '5'),
('4', '1'), ('4', '2'),
('5', '3'), ('5', 'G')
])
with g.subgraph(name='cluster_2') as c:
c.edges([('s1', 'sA'), ('s1', 'sB'),
('s2', 'sC'), ('s2', 'sD'),
('s3', 'sE'), ('s3', 'sF'),
('s6', 's4'), ('s6', 's5'),
('s4', 's1'), ('s4', 's2'),
('s5', 's3'), ('s5', 'sG')
])
styles = {
'rank': {'same;sF;sG'},
'edges': {
'dir': 'both',
'arrowhead': 'none',
'arrowtail': 'normal'
}
}
c = apply_styles(c, styles)
g.view()
出力
digraph G {
subgraph cluster_1 {
1 -> A
1 -> B
2 -> C
2 -> D
3 -> E
3 -> F
6 -> 4
6 -> 5
4 -> 1
4 -> 2
5 -> 3
5 -> G
}
subgraph cluster_2 {
edge [arrowhead=none arrowtail=normal dir=both]
s1 -> sA
s1 -> sB
s2 -> sC
s2 -> sD
s3 -> sE
s3 -> sF
s6 -> s4
s6 -> s5
s4 -> s1
s4 -> s2
s5 -> s3
s5 -> sG
}
}