Цвет узлов по атрибуту узла Networkx с боке - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь использовать bokeh для создания интерактивной визуализации сети.Я понимаю, как добавить атрибутивные данные в график боке, но я не уверен, как назначить цвет заливки на основе атрибута узла.

Я следовал всем примерам боке , которое я могу найти, но я не могу понять это.

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

import networkx as nx
from bokeh.io import show, output_notebook
from bokeh.plotting import figure
from bokeh.models import Circle, HoverTool, TapTool, BoxSelectTool
from bokeh.models.graphs import from_networkx

output_notebook()

# create a sample graph
G = nx.karate_club_graph()

# create the plot
plot = figure(x_range=(-1.1, 1.1), y_range=(-1.1, 1.1))

# add tools to the plot
plot.add_tools(HoverTool(tooltips=[("Name", "@name"), 
                                   ("Club", "@club")]), 
               TapTool(), 
               BoxSelectTool())

# create bokeh graph
graph = from_networkx(G, nx.spring_layout, iterations=1000, scale=1, center=(0,0))

# add name to node data
graph.node_renderer.data_source.data['name'] = list(G.nodes())

# add club to node data
graph.node_renderer.data_source.data['club'] = [i[1]['club'] for i in G.nodes(data=True)]

# set node size
graph.node_renderer.glyph = Circle(size=10)

plot.renderers.append(graph)
show(plot)

Bokeh Graph

1 Ответ

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

Вопрос немного расплывчат, поэтому я не уверен, что приведенный ниже код - именно то, что вы просите.(Является ли атрибут "узла" тем, что вы копируете в столбец "имена"? Я так думаю ...) Но независимо от этого вы можете использовать linear_cmap для цветовой карты fill_color в соответствии с любым CDSстолбец:

from bokeh.transform import linear_cmap
graph.node_renderer.glyph = Circle(
    size=10, 
    fill_color=linear_cmap('name', 'Spectral8', min(G.nodes()), max(G.nodes()))
)

В качестве альтернативы, если столбец является строковым множителем, вы также можете использовать factor_cmap.

enter image description here

...