Принудительное & ldquo; main line & rdquo; узлы в прямую линию в Graphviz (или альтернативы)

WFM

>>> fstr = 'def f(%s): pass' % (', '.join(['arg%d' % i for i in range(5000)]))
>>> exec(fstr)
>>> f
<function f at 0x829bae4>

Обновление: как заметил Брайан, предел на вызывающей стороне:

>>> exec 'f(' + ','.join(str(i) for i in range(5000)) + ')'

Traceback (most recent call last):
  File "<pyshell#63>", line 1, in <module>
    exec 'f(' + ','.join(str(i) for i in range(5000)) + ')'
  File "<string>", line 1
SyntaxError: more than 255 arguments (<string>, line 1)

, с другой стороны, это работает:

>>> f(*range(5000))
>>> 

Вывод: нет, он не применяется к развернутым аргументам.

23
задан Chad Birch 12 January 2011 в 16:31
поделиться

1 ответ

Вот решение с использованием атрибута weight граней:

digraph G {
    rankdir="LR";
    node[width=0.15, height=0.15, shape=point];
    edge[weight=2, arrowhead=none];
    1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8;
    edge[weight=1];
    2 -> 9 -> 10 ;
    5-> 11 -> 12;
}

Результат:

graphivz

36
ответ дан marapet 12 January 2011 в 16:31
поделиться