Как установить random_state в графе networkx с помощью holoviews / bokeh? - PullRequest
0 голосов
/ 22 мая 2018

Я хотел бы создать воспроизводимые графики.С помощью networkx можно передать случайное состояние в макет.То есть чтобы сюжет был таким же.Делая то же самое с holoviews я получаю ошибку.

%pylab inline

import pandas as pd
import networkx as nx
import holoviews as hv

# generating the graph
G = nx.Graph()
ndxs = [1, 2, 3, 4]
G.add_nodes_from(ndxs)
G.add_weighted_edges_from([(1,2,0), (1,3,1), (1,4,-1),
                           (2,4,1), (2,3,-1), (3,4,10)]) 

# drawing with networkx
nx.draw(G, nx.spring_layout(G, random_state=100))


# drawing with holoviews/bokeh
hv.extension('bokeh')
%opts Graph [width=400 height=400]
layout = nx.layout.spring_layout(G, random_state=100)
hv.Graph.from_networkx(G, layout)
>>> TypeError: 'dict' object is not callable

1 Ответ

0 голосов
/ 24 мая 2018

Первая проблема заключается в том, что метод Graph.from_networkx принимает функцию макета, а не словарь, который выводится этой функцией.Если вы хотите передать аргументы функции, вы можете сделать это в качестве ключевого аргумента, например:

hv.Graph.from_networkx(G, nx.layout.spring_layout, random_state=42)

В моей версии сети x random_state не является допустимым аргументом для функций макета, в этом случае вы можетеустановить семена непосредственно с помощью NumPy:

np.random.seed(42)
hv.Graph.from_networkx(G, nx.layout.spring_layout)
...