LINUX.ORG.RU

networkx заполение из массива

 , ,


0

1

Доброго времени. Нашёл неплохой инструмент для построения дерева. Но не нахожу толкового мануала, было бы конечно здорово чтобы на русском. В частности не могу понять как организовать построение имея массив edges.



Последнее исправление: wojaovlad (всего исправлений: 1)

Ответ на: комментарий от aemxdp

Подскажите пожалуйста, или скиньте ссылку, как управлять расположением точек. Через spring_layout не могу сделать. Нашёл такой пример

import networkx as nx
import matplotlib.pyplot as plt

G=nx.path_graph(15)
shells=[[0],[1, 2, 3, 4, 5],[6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
nx.draw_networkx(G, pos=nx.shell_layout(G, shells))
plt.show()

Попытался у себя испробовать, а мне выдаёт ошибку
networkx.exception.NetworkXError: Node 'int randomus()' has no position.

Сам код:

from grab import Grab
import urllib
import networkx as nx
from networkx import draw, Graph
from pylab import show
import re

func = re.compile(r'int\s+\w+\(\)')
cycle = re.compile(r'(?:for|while)')
gr = nx.Graph()
grr = nx.Graph()
i = 0
o =0
g = open('time.c')
g = g.read()
functions = re.findall(func, g)
#gr.add_node([[0]])
shells=[[0],[1, 2, 3, 4, 5],[6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
for function in functions:
    print functions[i]
    gr.add_node(functions[i])
#    gr.add_edge(functions[i],functions[i])
    i+=1
cycles = re.findall(cycle, g)
for cycle in cycles:
    print cycles[o]
    grr.add_edge(o,o+1)
#    gr.add_node(cycles[o])
    o+=1



nx.draw(gr,  pos=nx.shell_layout(gr, shells))
nx.draw(grr, node_color='g')
show()

print o
print i



Тут я конечно наворотил в попытках что-то сотворить....но всё же
wojaovlad
() автор топика
Ответ на: комментарий от wojaovlad

Сложно так со стороны угадать, в чём здесь проблема. Может надо чтобы все ноды были в каких-то рёбрах. Попробуй посмотреть, что там в лейауте:

print nx.shell_layout(gr, shells)

aemxdp
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.