Как нарисовать узлы с минимальным расстоянием с Pygraphviz Python - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь собрать информацию от коммутаторов с помощью SNMP и нарисовать топологию подключенных коммутаторов с помощью пакета визуализации python pygraphviz .Я хочу запустить свою программу, чтобы увидеть текущую топологию и распечатать топологию на обычной странице формата A4.Проблема в том, что из-за большего расстояния между коммутаторами вся топология не может быть напечатана на обычной бумаге формата A4.Есть ли способ сохранить минимальное расстояние между подключенными узлами, чтобы вся топология помещалась на одной странице формата A4.Мои коды для рисования топологии похожи на приведенные ниже коды:

from pysnmp.entity.rfc3413.oneliner import cmdgen
import pygraphviz as pgv
import time

graph = pgv.AGraph(format='svg',strict='True')
edges = []

edges.append(('switch1','24','switch2', '1'))
edges.append(('switch1','25','switch3', '2'))
edges.append(('switch1','26','switch4', '3'))
edges.append(('switch1','27','switch5', '4'))
edges.append(('switch1','28','switch6', '5'))
edges.append(('switch1','29','switch7', '6'))
edges.append(('switch1','30','switch8', '7'))
edges.append(('switch2','2','switch11', '1'))
edges.append(('switch11','2','switch12', '1'))
edges.append(('switch3','3','switch13', '1'))
edges.append(('switch13','2','switch14', '1'))
edges.append(('switch13','3','switch15', '1'))
edges.append(('switch4','1','switch16', '1'))
edges.append(('switch16','2','switch17', '1'))
edges.append(('switch16','3','switch18', '1'))
edges.append(('switch16','4','switch19', '1'))
edges.append(('switch16','5','switch20', '1'))
edges.append(('switch5','1','switch23', '1'))
edges.append(('switch5','2','switch24', '1'))
edges.append(('switch5','3','switch25', '1'))
edges.append(('switch26','2','switch27', '1'))
edges.append(('switch27','2','switch28', '1'))
edges.append(('switch5','6','switch29', '1'))
edges.append(('switch5','5','switch27', '3'))
edges.append(('switch29','2','switch30', '1'))
edges.append(('switch30','2','switch31', '1'))
edges.append(('switch31','2','switch32', '1'))
edges.append(('switch32','2','switch33', '1'))
edges.append(('switch33','2','switch34', '1'))

for edge in edges:
 graph.add_edge(edge[0],edge[2],taillabel=str(edge[3]),headlabel=str(edge[1]))

timestr = time.strftime("%Y%m%d-%H%M%S")
graph.node_attr["shape"] = "box"
graph.graph_attr.update(ranksep='0.1')
#graph.edge_attr.update(len='1.0', color='red')
graph.layout(prog="circo")
graph.draw("output1/amap_trd"+timestr+".ps")
graph.draw("output1/amap_trd"+timestr+".png")

Вывод: топология с длинным краевым расстоянием

Возможно, мне не хватает простого кодаПрошу прощения, если это очень глупый вопрос.С нетерпением ждем ответа.Заранее спасибо.

...