Я генерирую случайный граф и рисую его из матрицы смежности.Я должен быть в состоянии добавить веса края.
Я смотрел на Добавление весов ребер для построения вывода в сети x , и это, кажется, работает нормально и это именно то, что я ищу на дисплее, но это работает только при добавлении ребериндивидуально.
Я использую: nx.from_numpy_matrix (G, create_using = nx.DiGraph ())
И в соответствии с документацией , если несимметричная матрица смежностиимеет только целочисленные записи (что он делает), записи будут интерпретироваться как взвешенные ребра, соединяющие вершины (без создания параллельных ребер).Поэтому, глядя на Добавление весов ребер для вывода графика в сети x , они захватывают атрибуты узла, захватывают атрибуты меток и рисуют метки ребер.Но я не могу взять атрибуты.Кто-нибудь знает, как отображать эти ребра, все еще используя эту матрицу смежности?
Заранее спасибо!
from random import random
import numpy
import networkx as nx
import matplotlib.pyplot as plt
#here's how I'm generating my random matrix
def CreateRandMatrix( numnodes = int):
def RandomHelper():
x = random()
if x < .70:
return(0)
elif .7 <= x and x <.82:
return(1)
elif .82 <= x and x <.94:
return(2)
else:
return(3)
randomatrix = numpy.matrix([[RandomHelper() for x in range(numnodes)] for y in range(numnodes)])
for i in range(len(randomatrix)):
randomatrix[i,i]=0
return randomatrix
#this generate the graph I want to display edge weights on
def Draw(n = int):
MatrixtoDraw = CreateRandMatrix(n)
G = nx.from_numpy_matrix(MatrixtoDraw, create_using = nx.DiGraph())
nx.draw_spring(G, title="RandMatrix",with_labels=True)
plt.show()
Это моя попытка следовать Добавление весов ребер для построения вывода вnetworkx .
def Draw2(n = int):
MatrixtoDraw = CreateRandMatrix(n)
G = nx.from_numpy_matrix(MatrixtoDraw, create_using = nx.DiGraph())
nx.draw_spring(G, title="RandMatrix",with_labels=True)
pos=nx.get_node_attributes(G,'pos')
labels = nx.get_edge_attributes(G,'weight')
nx.draw_networkx_edge_labels(G,pos,edge_labels=labels)
plt.show()
Если я запускаю каждую строку отдельно на холостом ходу, я получаю
>>> nx.get_node_attributes(G,'pos')
{}
>>> nx.get_node_attributes(G,'weight')
{}
Почему они не извлекаются из графической информации, генерируемой матрицей смежности?