Цвета узлов Networkx на сетевых диаграммах Bokeh / Holoviews

Я строю сетевую диаграмму с помощью Networkx и хочу, следовательно, построить в голографических изображениях и боке. Кажется, существует несколько способов аннотировать и изменять сетевые узлы (круги глифов), но, используя создание экземпляра графа holoviews, я не могу понять, как передать данные атрибута узла в средство визуализации, чтобы раскрасить узлы на основе определенного атрибута.

Это работает, когда я использую только боке, но построение графического объекта networkx в головиде не позволяет мне передавать какой-либо тип информации для окраски узлов, кроме одного цвета.

N = hv.Graph.from_networkx(G, nx.layout.fruchterman_reingold_layout,k=1)
                          .opts(tools=['hover','tap'],
                                node_size=20,node_color=G.node[i]['color'])


N.relabel('USCG Structural Condition Network')
N.opts(inspection_policy='edges',bgcolor='lightblue',
       show_legend=True,node_hover_fill_color='red')

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


person NavArch    schedule 07.10.2019    source источник


Ответы (1)


cmap опция отсутствует. Параметр node_color принимает все, что vdim вы определили в графе networkx.

Например,

G = nx.karate_club_graph()
node_type = np.array(['type1']*17 + ['type2']*17).reshape(34)

for i, _ in enumerate(G.nodes()):
    G.nodes[i]['type'] = node_type[i]
N = hv.Graph.from_networkx(G, nx.layout.fruchterman_reingold_layout,k=1).opts(tools=['hover','tap'],
                                                                          node_size=10,
                                                                          node_color='type',
                                                                          cmap = ['blue','orange'] 

                                                                         )

дает

цветной график узлов

person Shivam Miglani    schedule 07.05.2020