Атрибут узла Color by NetworkX в сетевой визуализации Bokeh и Holoviews - PullRequest
0 голосов
/ 14 мая 2018

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

Я следовал за всеми примерами боке и всеми примерами holoviews , которые я могу найти, но я не могу понять это. Пример Facebook выглядит многообещающе, но я не могу поверить, что мне нужно было бы взять мои данные из networkx в pandas, чтобы сделать это.

Как я могу настроить свой код ниже, чтобы раскрасить узлы по их атрибутам узла NetworkX?

import networkx as nx
import holoviews as hv

hv.extension('bokeh')

%opts Graph [width=400 height=400]

# create an example graph
g = nx.karate_club_graph()

# look at node attributes
g.nodes[0]
{'club': 'Mr. Hi'}

# load network into holoviews
graph = hv.Graph.from_networkx(g, nx.spring_layout)

# define color palette
colors = ['#000000']+hv.Cycle('Category20').values

# set plotting options
plot_opts = dict(color_index='club', 
                 xaxis=None, 
                 yaxis=None, 
                 show_frame=False)

# set stple options
style_opts = dict(node_size=15, 
                  cmap=colors,
                  edge_line_width=2, 
                  edge_alpha=0.3)

# apply options to plot
padding = {'x': (-1.2, 1.2), 'y': (-1.2, 1.2)}
graph = graph.redim.range(**padding).opts(style=style_opts, plot=plot_opts)

# show plot
graph

graph

...